diff --git a/deployments/compiler-inputs/b6c351fd96634234999dc102235e550e.json b/deployments/compiler-inputs/b6c351fd96634234999dc102235e550e.json new file mode 100644 index 00000000..19966782 --- /dev/null +++ b/deployments/compiler-inputs/b6c351fd96634234999dc102235e550e.json @@ -0,0 +1,4784 @@ +{ + "solcVersion": "0.8.23", + "solcLongVersion": "0.8.23", + "id": "b6c351fd96634234999dc102235e550e", + "input": { + "language": "Solidity", + "settings": { + "viaIR": false, + "optimizer": { + "runs": 200, + "enabled": true + }, + "metadata": { + "useLiteralContent": false, + "bytecodeHash": "ipfs", + "appendCBOR": true + }, + "outputSelection": { + "lib/forge-std/src/Base.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/Script.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdAssertions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdChains.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdCheats.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdError.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdInvariant.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdJson.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdMath.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdStorage.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdStyle.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdToml.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/StdUtils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/Test.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/Vm.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/console.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/console2.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/interfaces/IERC165.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/interfaces/IERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/interfaces/IERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/interfaces/IMulticall3.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/mocks/MockERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/mocks/MockERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/forge-std/src/safeconsole.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/core/interfaces/ISphinxModule.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/core/interfaces/ISphinxModuleProxyFactory.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/StdUtils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/interfaces/IERC165.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/interfaces/IERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/interfaces/IERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/interfaces/IMulticall3.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/mocks/MockERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/forge-std/src/mocks/MockERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/Sphinx.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/SphinxForkCheck.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/SphinxPlugin.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/SphinxUtils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/ICreateCall.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/IGnosisSafe.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/IGnosisSafeProxy.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/IGnosisSafeProxyFactory.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "lib/sphinx/packages/contracts/contracts/foundry/interfaces/IMultiSend.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorInterface.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV2V3Interface.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/governance/utils/Votes.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/metatx/ERC2771Forwarder.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/proxy/Clones.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Nonces.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Panic.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/ShortStrings.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@openzeppelin/contracts/utils/types/Time.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/Common.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/UD60x18.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd1x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd1x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd1x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd1x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd21x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd21x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd21x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd21x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/Helpers.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/Math.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/sd59x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud21x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud21x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud21x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud21x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud2x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud2x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud2x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud2x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Casting.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Constants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Conversions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Errors.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Helpers.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/Math.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@prb/math/src/ud60x18/ValueType.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "node_modules/@uniswap/permit2/test/utils/DeployPermit2.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "script/Deploy.s.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "script/DeployPeriphery.s.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "script/helpers/CoreDeploymentLib.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBChainlinkV3PriceFeed.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBChainlinkV3SequencerPriceFeed.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBController.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBDeadline.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBDirectory.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBFeelessAddresses.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBFundAccessLimits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBMultiTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBPermissions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBPrices.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBProjects.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBRulesets.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBSplits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBTerminalStore.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/JBTokens.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/abstract/JBControlled.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/abstract/JBPermissioned.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/enums/JBApprovalStatus.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBCashOutHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBCashOutTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBControlled.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBController.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBDirectory.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBDirectoryAccessControl.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBFeeTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBFeelessAddresses.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBFundAccessLimits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBMigratable.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBMultiTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPayHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPayoutTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPermissioned.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPermissions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPermitTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPriceFeed.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBPrices.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBProjectUriRegistry.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBProjects.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBRulesetApprovalHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBRulesetDataHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBRulesets.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBSplitHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBSplits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBTerminalStore.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBToken.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBTokenUriResolver.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/interfaces/IJBTokens.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBCashOuts.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBConstants.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBCurrencyIds.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBFees.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBFixedPointNumber.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBMetadataResolver.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBRulesetMetadataResolver.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBSplitGroupIds.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/libraries/JBSurplus.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/periphery/JBDeadline3Days.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/periphery/JBDeadline7Days.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBAccountingContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBAfterCashOutRecordedContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBAfterPayRecordedContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBBeforeCashOutRecordedContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBBeforePayRecordedContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBCashOutHookSpecification.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBCurrencyAmount.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBFee.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBFundAccessLimitGroup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBPayHookSpecification.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBPermissionsData.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBRuleset.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBRulesetConfig.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBRulesetMetadata.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBRulesetWeightCache.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBRulesetWithMetadata.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBSingleAllowance.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBSplit.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBSplitGroup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBSplitHookContext.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBTerminalConfig.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "src/structs/JBTokenAmount.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestAccessToFunds.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestCashOut.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestCashOutHooks.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestFees.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestInterfaceSupport.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestJBERC20Inheritance.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestLaunchProject.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestMetaTx.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestMetadataParserLib.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestMintTokensOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestMultipleAccessLimits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestPayBurnRedeemFlow.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestPayHooks.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestPermissions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestPermit2Terminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestRulesetQueueing.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestRulesetWeightCaching.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestSplits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/TestTokenFlow.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/helpers/JBTest.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/helpers/MetadataResolverHelper.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/helpers/TestBaseWorkflow.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/mock/ERC2771ForwarderMock.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/mock/MockERC20.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/mock/MockMaliciousBeneficiary.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/mock/MockMaliciousSplitHook.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/mock/MockPriceFeed.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/JBControllerSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestBurnTokensOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestClaimTokensFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestDeployErc20For.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestLaunchProjectFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestLaunchRulesetsFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestMigrateController.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestMintTokensOfUnits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestPayReservedTokenToTerminal.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestReceiveMigrationFrom.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestRulesetViews.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestSendReservedTokensToSplitsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestSetSplitGroupsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestSetTokenFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestSetUriOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBController/TestTransferCreditsFrom.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBDirectory/JBDirectorySetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBDirectory/TestPrimaryTerminalOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBDirectory/TestSetControllerOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBDirectory/TestSetPrimaryTerminalOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBDirectory/TestSetTerminalsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/JBERC20Setup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/SigUtils.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/TestInitialize.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/TestName.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/TestNonces.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBERC20/TestSymbol.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFeelessAdresses/JBFeelessSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFeelessAdresses/TestInterfaces.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFeelessAdresses/TestSetFeelessAddress.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFixedPointNumber/TestAdjustDecimals.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/JBFundAccessSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/TestPayoutLimitOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/TestPayoutLimitsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/TestSetFundAccessLimitsFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/TestSurplusAllowanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBFundAccessLimits/TestSurplusAllowancesOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMetadataResolver/TestGetDataFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/JBMultiTerminalSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestAccountingContextsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestAddAccountingContextsFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestAddToBalanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestCashOutTokensOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestExecutePayout.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestExecuteProcessFee.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestMigrateBalanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestPay.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestProcessHeldFeesOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestSendPayoutsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBMultiTerminal/TestUseAllowanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPermissions/JBPermissionsSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPermissions/TestHasPermission.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPermissions/TestHasPermissions.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPermissions/TestSetPermissionsFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPrices/JBPricesSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPrices/TestAddPriceFeedFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBPrices/TestPricePerUnitOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/JBProjectsSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/TestCreateFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/TestInitialProject.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/TestInterfaces.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/TestSetResolver.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBProjects/TestTokenUri.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesetMetadataResolver/TestSetCashOutTaxRateTo.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/JBRulesetsSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestCurrentApprovalStatusForLatestRulesetOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestCurrentOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestGetRulesetOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestLatestQueuedRulesetOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestRulesets.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestRulesetsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestUpcomingRulesetOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBRulesets/TestUpdateRulesetWeightCache.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBSplits/JBSplitsSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBSplits/TestSetSplitGroupsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBSplits/TestSplitsOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/JBTerminalStoreSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestCurrentReclaimableSurplusOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestCurrentSurplusOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestCurrentTotalSurplusOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestRecordCashOutsFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestRecordPaymentFrom.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestRecordPayoutFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestRecordTerminalMigration.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTerminalStore/TestRecordUsedAllowanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/JBTokensSetup.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestBurnFrom.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestClaimTokensFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestDeployERC20ForUnits.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestMintFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestSetTokenFor.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestTotalBalanceOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestTotalSupplyOf.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + }, + "test/units/static/JBTokens/TestTransferCreditsFrom.sol": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ] + } + }, + "evmVersion": "paris", + "libraries": {}, + "remappings": [ + "@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/", + "@arbitrum/=node_modules/@arbitrum/", + "@bananapus/=node_modules/@bananapus/", + "@chainlink/=node_modules/@chainlink/", + "@eth-optimism/=node_modules/@eth-optimism/", + "@offchainlabs/=node_modules/@offchainlabs/", + "@openzeppelin/=node_modules/@openzeppelin/", + "@prb/=node_modules/@prb/", + "@scroll-tech/=node_modules/@scroll-tech/", + "@uniswap/=node_modules/@uniswap/", + "@zksync/=node_modules/@zksync/", + "ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/", + "forge-std/=lib/forge-std/src/", + "hardhat/=node_modules/hardhat/", + "solmate/=node_modules/solmate/", + "sphinx/=lib/sphinx/" + ] + }, + "sources": { + "node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @notice Permission IDs for `JBPermissions`, used throughout the Bananapus ecosystem. See\n/// [`JBPermissions`](https://github.com/Bananapus/nana-core/blob/main/src/JBPermissions.sol)\n/// @dev `JBPermissions` allows one address to grant another address permission to call functions in Juicebox contracts\n/// on their behalf. Each ID in `JBPermissionIds` grants access to a specific set of these functions.\nlibrary JBPermissionIds {\n uint8 internal constant ROOT = 1; // All permissions across every contract. Very dangerous. BE CAREFUL!\n\n /* Used by `nana-core`: https://github.com/Bananapus/nana-core */\n uint8 internal constant QUEUE_RULESETS = 2; // Permission to call `JBController.queueRulesetsOf` and\n // `JBController.launchRulesetsFor`.\n uint8 internal constant CASH_OUT_TOKENS = 3; // Permission to call `JBMultiTerminal.cashOutTokensOf`.\n uint8 internal constant SEND_PAYOUTS = 4; // Permission to call `JBMultiTerminal.sendPayoutsOf`.\n uint8 internal constant MIGRATE_TERMINAL = 5; // Permission to call `JBMultiTerminal.migrateBalanceOf`.\n uint8 internal constant SET_PROJECT_URI = 6; // Permission to call `JBController.setUriOf`.\n uint8 internal constant DEPLOY_ERC20 = 7; // Permission to call `JBController.deployERC20For`.\n uint8 internal constant SET_TOKEN = 8; // Permission to call `JBController.setTokenFor`.\n uint8 internal constant MINT_TOKENS = 9; // Permission to call `JBController.mintTokensOf`.\n uint8 internal constant BURN_TOKENS = 10; // Permission to call `JBController.burnTokensOf`.\n uint8 internal constant CLAIM_TOKENS = 11; // Permission to call `JBController.claimTokensFor`.\n uint8 internal constant TRANSFER_CREDITS = 12; // Permission to call `JBController.transferCreditsFrom`.\n uint8 internal constant SET_CONTROLLER = 13; // Permission to call `JBDirectory.setControllerOf`.\n uint8 internal constant SET_TERMINALS = 14; // Permission to call `JBDirectory.setTerminalsOf`.\n // Be careful - `SET_TERMINALS` can be used to remove the primary terminal.\n uint8 internal constant SET_PRIMARY_TERMINAL = 15; // Permission to call `JBDirectory.setPrimaryTerminalOf`.\n uint8 internal constant USE_ALLOWANCE = 16; // Permission to call `JBMultiTerminal.useAllowanceOf`.\n uint8 internal constant SET_SPLIT_GROUPS = 17; // Permission to call `JBController.setSplitGroupsOf`.\n uint8 internal constant ADD_PRICE_FEED = 18; // Permission to call `JBPrices.addPriceFeedFor`.\n uint8 internal constant ADD_ACCOUNTING_CONTEXTS = 19; // Permission to call\n // `JBMultiTerminal.addAccountingContextsFor`.\n\n /* Used by `nana-721-hook`: https://github.com/Bananapus/nana-721-hook */\n uint8 internal constant ADJUST_721_TIERS = 20; // Permission to call `JB721TiersHook.adjustTiers`.\n uint8 internal constant SET_721_METADATA = 21; // Permission to call `JB721TiersHook.setMetadata`.\n uint8 internal constant MINT_721 = 22; // Permission to call `JB721TiersHook.mintFor`.\n uint8 internal constant SET_721_DISCOUNT_PERCENT = 23; // Permission to call `JB721TiersHook.setDiscountPercentOf`.\n\n /* Used by `nana-buyback-hook`: https://github.com/Bananapus/nana-buyback-hook */\n uint8 internal constant SET_BUYBACK_TWAP = 24; // Permission to call `JBBuybackHook.setTwapWindowOf` and\n // `JBBuybackHook.setTwapSlippageToleranceOf`.\n uint8 internal constant SET_BUYBACK_POOL = 25; // Permission to call `JBBuybackHook.setPoolFor`.\n\n /* Used by `nana-swap-terminal`: https://github.com/Bananapus/nana-swap-terminal */\n uint8 internal constant ADD_SWAP_TERMINAL_POOL = 26; // Permission to call `JBSwapTerminal.addDefaultPool`.\n uint8 internal constant ADD_SWAP_TERMINAL_TWAP_PARAMS = 27; // Permission to call\n // `JBSwapTerminal.addTwapParamsFor`.\n\n /* Used by `nana-suckers`: https://github.com/Bananapus/nana-suckers */\n uint8 internal constant MAP_SUCKER_TOKEN = 28; // Permission to call `BPSucker.mapToken`.\n uint8 internal constant DEPLOY_SUCKERS = 29; // Permission to call `BPSuckerRegistry.deploySuckersFor`.\n uint8 internal constant SUCKER_SAFETY = 30; // Permission to call `BPSucker.enableEmergencyHatchFor` and\n // `BPSucker.setDeprecation`.\n}\n" + }, + "src/JBPermissions.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBPermissionIds} from \"@bananapus/permission-ids/src/JBPermissionIds.sol\";\n\nimport {IJBPermissions} from \"./interfaces/IJBPermissions.sol\";\nimport {JBPermissionsData} from \"./structs/JBPermissionsData.sol\";\n\n/// @notice Stores permissions for all addresses and operators. Addresses can give permissions to any other address\n/// (i.e. an *operator*) to execute specific operations on their behalf.\ncontract JBPermissions is IJBPermissions {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBPermissions_PermissionIdOutOfBounds(uint256 permissionId);\n error JBPermissions_Unauthorized();\n\n //*********************************************************************//\n // ------------------------- public constants ------------------------ //\n //*********************************************************************//\n\n /// @notice The project ID considered a wildcard, meaning it will grant permissions to all projects.\n uint256 public constant override WILDCARD_PROJECT_ID = 0;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice The permissions that an operator has been given by an account for a specific project.\n /// @dev An account can give an operator permissions that only pertain to a specific project ID.\n /// @dev There is no project with a ID of 0 – this ID is a wildcard which gives an operator permissions pertaining\n /// to *all* project IDs on an account's behalf. Use this with caution.\n /// @dev Permissions are stored in a packed `uint256`. Each of the 256 bits represents the on/off state of a\n /// permission. Applications can specify the significance of each permission ID.\n /// @custom:param operator The address of the operator.\n /// @custom:param account The address of the account being operated on behalf of.\n /// @custom:param projectId The project ID the permissions are scoped to. An ID of 0 grants permissions across all\n /// projects.\n mapping(address operator => mapping(address account => mapping(uint256 projectId => uint256))) public override\n permissionsOf;\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice Check if an operator has a specific permission for a specific address and project ID.\n /// @param operator The operator to check.\n /// @param account The account being operated on behalf of.\n /// @param projectId The project ID that the operator has permission to operate under. 0 represents all projects.\n /// @param permissionId The permission ID to check for.\n /// @param includeRoot A flag indicating if the return value should default to true if the operator has the ROOT\n /// permission.\n /// @param includeWildcardProjectId A flag indicating if the return value should return true if the operator has the\n /// specified permission on the wildcard project ID.\n /// true.\n /// @return A flag indicating whether the operator has the specified permission.\n function hasPermission(\n address operator,\n address account,\n uint256 projectId,\n uint256 permissionId,\n bool includeRoot,\n bool includeWildcardProjectId\n )\n public\n view\n override\n returns (bool)\n {\n // Indexes above 255 don't exist\n if (permissionId > 255) revert JBPermissions_PermissionIdOutOfBounds(permissionId);\n\n // If the ROOT permission is set and should be included, return true.\n if (\n includeRoot\n && (\n _includesPermission({\n permissions: permissionsOf[operator][account][projectId],\n permissionId: JBPermissionIds.ROOT\n })\n || (\n includeWildcardProjectId\n && _includesPermission({\n permissions: permissionsOf[operator][account][WILDCARD_PROJECT_ID],\n permissionId: JBPermissionIds.ROOT\n })\n )\n )\n ) {\n return true;\n }\n\n // Otherwise return the t/f flag of the specified id.\n return _includesPermission({\n permissions: permissionsOf[operator][account][projectId],\n permissionId: permissionId\n })\n || (\n includeWildcardProjectId\n && _includesPermission({\n permissions: permissionsOf[operator][account][WILDCARD_PROJECT_ID],\n permissionId: permissionId\n })\n );\n }\n\n /// @notice Check if an operator has all of the specified permissions for a specific address and project ID.\n /// @param operator The operator to check.\n /// @param account The account being operated on behalf of.\n /// @param projectId The project ID that the operator has permission to operate under. 0 represents all projects.\n /// @param permissionIds An array of permission IDs to check for.\n /// @param includeRoot A flag indicating if the return value should default to true if the operator has the ROOT\n /// permission.\n /// @param includeWildcardProjectId A flag indicating if the return value should return true if the operator has the\n /// specified permission on the wildcard project ID.\n /// @return A flag indicating whether the operator has all specified permissions.\n function hasPermissions(\n address operator,\n address account,\n uint256 projectId,\n uint256[] calldata permissionIds,\n bool includeRoot,\n bool includeWildcardProjectId\n )\n external\n view\n override\n returns (bool)\n {\n // If the ROOT permission is set and should be included, return true.\n if (\n includeRoot\n && (\n _includesPermission({\n permissions: permissionsOf[operator][account][projectId],\n permissionId: JBPermissionIds.ROOT\n })\n || (\n includeWildcardProjectId\n && _includesPermission({\n permissions: permissionsOf[operator][account][WILDCARD_PROJECT_ID],\n permissionId: JBPermissionIds.ROOT\n })\n )\n )\n ) {\n return true;\n }\n\n // Keep a reference to the permission item being checked.\n uint256 operatorAccountProjectPermissions = permissionsOf[operator][account][projectId];\n\n // Keep a reference to the wildcard project permissions.\n uint256 operatorAccountWildcardProjectPermissions =\n includeWildcardProjectId ? permissionsOf[operator][account][WILDCARD_PROJECT_ID] : 0;\n\n for (uint256 i; i < permissionIds.length; i++) {\n // Set the permission being iterated on.\n uint256 permissionId = permissionIds[i];\n\n // Indexes above 255 don't exist\n if (permissionId > 255) revert JBPermissions_PermissionIdOutOfBounds(permissionId);\n\n // Check each permissionId\n if (\n !_includesPermission({permissions: operatorAccountProjectPermissions, permissionId: permissionId})\n && !_includesPermission({permissions: operatorAccountWildcardProjectPermissions, permissionId: permissionId})\n ) {\n return false;\n }\n }\n return true;\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice Checks if a permission is included in a packed permissions data.\n /// @param permissions The packed permissions to check.\n /// @param permissionId The ID of the permission to check for.\n /// @return A flag indicating whether the permission is included.\n function _includesPermission(uint256 permissions, uint256 permissionId) internal pure returns (bool) {\n return ((permissions >> permissionId) & 1) == 1;\n }\n\n /// @notice Converts an array of permission IDs to a packed `uint256`.\n /// @param permissionIds The IDs of the permissions to pack.\n /// @return packed The packed value.\n function _packedPermissions(uint8[] calldata permissionIds) internal pure returns (uint256 packed) {\n for (uint256 i; i < permissionIds.length; i++) {\n // Set the permission being iterated on.\n uint256 permissionId = permissionIds[i];\n\n // Turn on the bit at the ID.\n packed |= 1 << permissionId;\n }\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Sets permissions for an operator.\n /// @dev Only an address can give permissions to or revoke permissions from its operators.\n /// @param account The account setting its operators' permissions.\n /// @param permissionsData The data which specifies the permissions the operator is being given.\n function setPermissionsFor(address account, JBPermissionsData calldata permissionsData) external override {\n // Pack the permission IDs into a uint256.\n uint256 packed = _packedPermissions(permissionsData.permissionIds);\n\n // Enforce permissions. ROOT operators are allowed to set permissions so long as they are not setting another\n // ROOT permission.\n if (\n msg.sender != account\n && (\n _includesPermission({permissions: packed, permissionId: JBPermissionIds.ROOT})\n || !hasPermission({\n operator: msg.sender,\n account: account,\n projectId: permissionsData.projectId,\n permissionId: JBPermissionIds.ROOT,\n includeRoot: true,\n includeWildcardProjectId: true\n })\n )\n ) revert JBPermissions_Unauthorized();\n\n // Store the new value.\n permissionsOf[permissionsData.operator][account][permissionsData.projectId] = packed;\n\n emit OperatorPermissionsSet({\n operator: permissionsData.operator,\n account: account,\n projectId: permissionsData.projectId,\n permissionIds: permissionsData.permissionIds,\n packed: packed,\n caller: msg.sender\n });\n }\n}\n" + }, + "src/interfaces/IJBPermissions.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBPermissionsData} from \"./../structs/JBPermissionsData.sol\";\n\ninterface IJBPermissions {\n event OperatorPermissionsSet(\n address indexed operator,\n address indexed account,\n uint256 indexed projectId,\n uint8[] permissionIds,\n uint256 packed,\n address caller\n );\n\n function WILDCARD_PROJECT_ID() external view returns (uint256);\n\n function permissionsOf(address operator, address account, uint256 projectId) external view returns (uint256);\n\n function hasPermission(\n address operator,\n address account,\n uint256 projectId,\n uint256 permissionId,\n bool includeRoot,\n bool includeWildcardProjectId\n )\n external\n view\n returns (bool);\n\n function hasPermissions(\n address operator,\n address account,\n uint256 projectId,\n uint256[] calldata permissionIds,\n bool includeRoot,\n bool includeWildcardProjectId\n )\n external\n view\n returns (bool);\n\n function setPermissionsFor(address account, JBPermissionsData calldata permissionsData) external;\n}\n" + }, + "src/structs/JBPermissionsData.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member operator The address that permissions are being given to.\n/// @custom:member projectId The ID of the project the operator is being given permissions for. Operators only have\n/// permissions under this project's scope. An ID of 0 is a wildcard, which gives an operator permissions across all\n/// projects.\n/// @custom:member permissionIds The IDs of the permissions being given. See the `JBPermissionIds` library.\nstruct JBPermissionsData {\n address operator;\n uint56 projectId;\n uint8[] permissionIds;\n}\n" + }, + "node_modules/@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"./IERC721.sol\";\nimport {IERC721Metadata} from \"./extensions/IERC721Metadata.sol\";\nimport {ERC721Utils} from \"./utils/ERC721Utils.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {Strings} from \"../../utils/Strings.sol\";\nimport {IERC165, ERC165} from \"../../utils/introspection/ERC165.sol\";\nimport {IERC721Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\nabstract contract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Errors {\n using Strings for uint256;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n mapping(uint256 tokenId => address) private _owners;\n\n mapping(address owner => uint256) private _balances;\n\n mapping(uint256 tokenId => address) private _tokenApprovals;\n\n mapping(address owner => mapping(address operator => 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 returns (uint256) {\n if (owner == address(0)) {\n revert ERC721InvalidOwner(address(0));\n }\n return _balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual returns (address) {\n return _requireOwned(tokenId);\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\n _requireOwned(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string.concat(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 {\n _approve(to, tokenId, _msgSender());\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual returns (address) {\n _requireOwned(tokenId);\n\n return _getApproved(tokenId);\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual 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 {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n // Setting an \"auth\" arguments enables the `_isAuthorized` check which verifies that the token exists\n // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\n address previousOwner = _update(to, tokenId, _msgSender());\n if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public {\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 {\n transferFrom(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n *\n * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n return _owners[tokenId];\n }\n\n /**\n * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\n */\n function _getApproved(uint256 tokenId) internal view virtual returns (address) {\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n * particular (ignoring whether it is owned by `owner`).\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\n return\n spender != address(0) &&\n (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n * Reverts if:\n * - `spender` does not have approval from `owner` for `tokenId`.\n * - `spender` does not have approval to manage all of `owner`'s assets.\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\n if (!_isAuthorized(owner, spender, tokenId)) {\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else {\n revert ERC721InsufficientApproval(spender, tokenId);\n }\n }\n }\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n *\n * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n * remain consistent with one another.\n */\n function _increaseBalance(address account, uint128 value) internal virtual {\n unchecked {\n _balances[account] += value;\n }\n }\n\n /**\n * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that\n * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n *\n * Emits a {Transfer} event.\n *\n * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\n address from = _ownerOf(tokenId);\n\n // Perform (optional) operator check\n if (auth != address(0)) {\n _checkAuthorized(from, auth, tokenId);\n }\n\n // Execute the update\n if (from != address(0)) {\n // Clear approval. No need to re-authorize or emit the Approval event\n _approve(address(0), tokenId, address(0), false);\n\n unchecked {\n _balances[from] -= 1;\n }\n }\n\n if (to != address(0)) {\n unchecked {\n _balances[to] += 1;\n }\n }\n\n _owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n return from;\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 {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner != address(0)) {\n revert ERC721InvalidSender(address(0));\n }\n }\n\n /**\n * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\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 {\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 ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\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 {\n address previousOwner = _update(address(0), tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\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 {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n * are aware of the ERC-721 standard 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 like {safeTransferFrom} in the sense that it invokes\n * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `tokenId` token must exist and be owned by `from`.\n * - `to` cannot be the zero address.\n * - `from` cannot be the zero address.\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) internal {\n _safeTransfer(from, to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n * either the owner of the token, or approved to operate on all tokens held by this owner.\n *\n * Emits an {Approval} event.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address to, uint256 tokenId, address auth) internal {\n _approve(to, tokenId, auth, true);\n }\n\n /**\n * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n * emitted in the context of transfers.\n */\n function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\n // Avoid reading the owner unless necessary\n if (emitEvent || auth != address(0)) {\n address owner = _requireOwned(tokenId);\n\n // We do not use _isAuthorized because single-token approvals should not be able to call approve\n if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\n revert ERC721InvalidApprover(auth);\n }\n\n if (emitEvent) {\n emit Approval(owner, to, tokenId);\n }\n }\n\n _tokenApprovals[tokenId] = to;\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Requirements:\n * - operator can't be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n if (operator == address(0)) {\n revert ERC721InvalidOperator(operator);\n }\n _operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n * Returns the owner.\n *\n * Overrides to ownership logic should be done to {_ownerOf}.\n */\n function _requireOwned(uint256 tokenId) internal view returns (address) {\n address owner = _ownerOf(tokenId);\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n return owner;\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-721 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\n * 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 ERC-721 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\n * {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * 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 ERC-721\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 address zero.\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" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC-721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC-721 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\n * 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" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../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" + }, + "node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/utils/ERC721Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721Receiver} from \"../IERC721Receiver.sol\";\nimport {IERC721Errors} from \"../../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Library that provide common ERC-721 utility functions.\n *\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n *\n * _Available since v5.1._\n */\nlibrary ERC721Utils {\n /**\n * @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}\n * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n *\n * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n * the transfer.\n */\n function checkOnERC721Received(\n address operator,\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\n if (retval != IERC721Receiver.onERC721Received.selector) {\n // Token rejected\n revert IERC721Errors.ERC721InvalidReceiver(to);\n }\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n // non-IERC721Receiver implementer\n revert IERC721Errors.ERC721InvalidReceiver(to);\n } else {\n assembly (\"memory-safe\") {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\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" + }, + "node_modules/@openzeppelin/contracts/utils/Panic.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n * using Panic for uint256;\n *\n * // Use any of the declared internal constants\n * function foo() { Panic.GENERIC.panic(); }\n *\n * // Alternatively\n * function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n /// @dev generic / unspecified error\n uint256 internal constant GENERIC = 0x00;\n /// @dev used by the assert() builtin\n uint256 internal constant ASSERT = 0x01;\n /// @dev arithmetic underflow or overflow\n uint256 internal constant UNDER_OVERFLOW = 0x11;\n /// @dev division or modulo by zero\n uint256 internal constant DIVISION_BY_ZERO = 0x12;\n /// @dev enum conversion error\n uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n /// @dev invalid encoding in storage\n uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n /// @dev empty array pop\n uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n /// @dev array out of bounds access\n uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n /// @dev resource error (too large allocation or too large array)\n uint256 internal constant RESOURCE_ERROR = 0x41;\n /// @dev calling invalid internal function\n uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n /// @dev Reverts with a panic code. Recommended to use with\n /// the internal constants with predefined codes.\n function panic(uint256 code) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x00, 0x4e487b71)\n mstore(0x20, code)\n revert(0x1c, 0x24)\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\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 assembly (\"memory-safe\") {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n assembly (\"memory-safe\") {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\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 toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(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 uint256 localValue = value;\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] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\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\n * 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 Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n * representation, according to EIP-55.\n */\n function toChecksumHexString(address addr) internal pure returns (string memory) {\n bytes memory buffer = bytes(toHexString(addr));\n\n // hash the hex part of buffer (skip length + 2 bytes, length 40)\n uint256 hashValue;\n assembly (\"memory-safe\") {\n hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n }\n\n for (uint256 i = 41; i > 1; --i) {\n // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n // case shift by xoring with 0x20\n buffer[i] ^= 0x20;\n }\n hashValue >>= 4;\n }\n return string(buffer);\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 bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 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 */\nabstract contract ERC165 is IERC165 {\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\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[ERC 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" + }, + "node_modules/@openzeppelin/contracts/utils/math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an success flag (no overflow).\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an success flag (no overflow).\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * SafeCast.toUint(condition));\n }\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 ternary(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 ternary(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 towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n\n // The following calculation ensures accurate ceiling division without overflow.\n // Since a is non-zero, (a - 1) / b will not overflow.\n // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n // but the largest value we can obtain is type(uint256).max - 1, which happens\n // when a = type(uint256).max and b = 1.\n unchecked {\n return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n }\n }\n\n /**\n * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n *\n * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * 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²⁵⁶ and mod 2²⁵⁶ - 1, then use\n // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2²⁵⁶ + prod0.\n uint256 prod0 = x * y; // 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 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²⁵⁶. Also prevents denominator == 0.\n if (denominator <= prod1) {\n Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n }\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.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\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²⁵⁶ / 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²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\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\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n inverse *= 2 - denominator * inverse; // inverse mod 2³²\n inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\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²⁵⁶. Since the preconditions guarantee that the outcome is\n // less than 2²⁵⁶, 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 * @dev 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 return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n }\n\n /**\n * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n *\n * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n *\n * If the input value is not inversible, 0 is returned.\n *\n * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n */\n function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n unchecked {\n if (n == 0) return 0;\n\n // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n // ax + ny = 1\n // ax = 1 + (-y)n\n // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n // If the remainder is 0 the gcd is n right away.\n uint256 remainder = a % n;\n uint256 gcd = n;\n\n // Therefore the initial coefficients are:\n // ax + ny = gcd(a, n) = n\n // 0a + 1n = n\n int256 x = 0;\n int256 y = 1;\n\n while (remainder != 0) {\n uint256 quotient = gcd / remainder;\n\n (gcd, remainder) = (\n // The old remainder is the next gcd to try.\n remainder,\n // Compute the next remainder.\n // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n // where gcd is at most n (capped to type(uint256).max)\n gcd - remainder * quotient\n );\n\n (x, y) = (\n // Increment the coefficient of a.\n y,\n // Decrement the coefficient of n.\n // Can overflow, but the result is casted to uint256 so that the\n // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n x - y * int256(quotient)\n );\n }\n\n if (gcd != 1) return 0; // No inverse exists.\n return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n }\n }\n\n /**\n * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n *\n * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n *\n * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n */\n function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n unchecked {\n return Math.modExp(a, p - 2, p);\n }\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n *\n * Requirements:\n * - modulus can't be zero\n * - underlying staticcall to precompile must succeed\n *\n * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n * interpreted as 0.\n */\n function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n (bool success, uint256 result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n * to operate modulo 0 or if the underlying precompile reverted.\n *\n * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n * of a revert, but the result may be incorrectly interpreted as 0.\n */\n function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n if (m == 0) return (false, 0);\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n // | Offset | Content | Content (Hex) |\n // |-----------|------------|--------------------------------------------------------------------|\n // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n mstore(ptr, 0x20)\n mstore(add(ptr, 0x20), 0x20)\n mstore(add(ptr, 0x40), 0x20)\n mstore(add(ptr, 0x60), b)\n mstore(add(ptr, 0x80), e)\n mstore(add(ptr, 0xa0), m)\n\n // Given the result < m, it's guaranteed to fit in 32 bytes,\n // so we can use the memory scratch space located at offset 0.\n success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n result := mload(0x00)\n }\n }\n\n /**\n * @dev Variant of {modExp} that supports inputs of arbitrary length.\n */\n function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n (bool success, bytes memory result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n */\n function tryModExp(\n bytes memory b,\n bytes memory e,\n bytes memory m\n ) internal view returns (bool success, bytes memory result) {\n if (_zeroBytes(m)) return (false, new bytes(0));\n\n uint256 mLen = m.length;\n\n // Encode call args in result and move the free memory pointer\n result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n assembly (\"memory-safe\") {\n let dataPtr := add(result, 0x20)\n // Write result on top of args to avoid allocating extra memory.\n success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n // Overwrite the length.\n // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n mstore(result, mLen)\n // Set the memory pointer after the returned data.\n mstore(0x40, add(dataPtr, mLen))\n }\n }\n\n /**\n * @dev Returns whether the provided byte array is zero.\n */\n function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n for (uint256 i = 0; i < byteArray.length; ++i) {\n if (byteArray[i] != 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n * using integer operations.\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n unchecked {\n // Take care of easy edge cases when a == 0 or a == 1\n if (a <= 1) {\n return a;\n }\n\n // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n // the current value as `ε_n = | x_n - sqrt(a) |`.\n //\n // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n // bigger than any uint256.\n //\n // By noticing that\n // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n // to the msb function.\n uint256 aa = a;\n uint256 xn = 1;\n\n if (aa >= (1 << 128)) {\n aa >>= 128;\n xn <<= 64;\n }\n if (aa >= (1 << 64)) {\n aa >>= 64;\n xn <<= 32;\n }\n if (aa >= (1 << 32)) {\n aa >>= 32;\n xn <<= 16;\n }\n if (aa >= (1 << 16)) {\n aa >>= 16;\n xn <<= 8;\n }\n if (aa >= (1 << 8)) {\n aa >>= 8;\n xn <<= 4;\n }\n if (aa >= (1 << 4)) {\n aa >>= 4;\n xn <<= 2;\n }\n if (aa >= (1 << 2)) {\n xn <<= 1;\n }\n\n // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n //\n // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n // This is going to be our x_0 (and ε_0)\n xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n // From here, Newton's method give us:\n // x_{n+1} = (x_n + a / x_n) / 2\n //\n // One should note that:\n // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n // = ((x_n² + a) / (2 * x_n))² - a\n // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n // = (x_n² - a)² / (2 * x_n)²\n // = ((x_n² - a) / (2 * x_n))²\n // ≥ 0\n // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n //\n // This gives us the proof of quadratic convergence of the sequence:\n // ε_{n+1} = | x_{n+1} - sqrt(a) |\n // = | (x_n + a / x_n) / 2 - sqrt(a) |\n // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n // = | (x_n - sqrt(a))² / (2 * x_n) |\n // = | ε_n² / (2 * x_n) |\n // = ε_n² / | (2 * x_n) |\n //\n // For the first iteration, we have a special case where x_0 is known:\n // ε_1 = ε_0² / | (2 * x_0) |\n // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n // ≤ 2**(2*e-4) / (3 * 2**(e-1))\n // ≤ 2**(e-3) / 3\n // ≤ 2**(e-3-log2(3))\n // ≤ 2**(e-4.5)\n //\n // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n // ε_{n+1} = ε_n² / | (2 * x_n) |\n // ≤ (2**(e-k))² / (2 * 2**(e-1))\n // ≤ 2**(2*e-2*k) / 2**e\n // ≤ 2**(e-2*k)\n xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above\n xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5\n xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9\n xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18\n xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36\n xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72\n\n // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n // sqrt(a) or sqrt(a) + 1.\n return xn - SafeCast.toUint(xn > a / xn);\n }\n }\n\n /**\n * @dev 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 + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n uint256 exp;\n unchecked {\n exp = 128 * SafeCast.toUint(value > (1 << 128) - 1);\n value >>= exp;\n result += exp;\n\n exp = 64 * SafeCast.toUint(value > (1 << 64) - 1);\n value >>= exp;\n result += exp;\n\n exp = 32 * SafeCast.toUint(value > (1 << 32) - 1);\n value >>= exp;\n result += exp;\n\n exp = 16 * SafeCast.toUint(value > (1 << 16) - 1);\n value >>= exp;\n result += exp;\n\n exp = 8 * SafeCast.toUint(value > (1 << 8) - 1);\n value >>= exp;\n result += exp;\n\n exp = 4 * SafeCast.toUint(value > (1 << 4) - 1);\n value >>= exp;\n result += exp;\n\n exp = 2 * SafeCast.toUint(value > (1 << 2) - 1);\n value >>= exp;\n result += exp;\n\n result += SafeCast.toUint(value > 1);\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 + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\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 + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\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 uint256 isGt;\n unchecked {\n isGt = SafeCast.toUint(value > (1 << 128) - 1);\n value >>= isGt * 128;\n result += isGt * 16;\n\n isGt = SafeCast.toUint(value > (1 << 64) - 1);\n value >>= isGt * 64;\n result += isGt * 8;\n\n isGt = SafeCast.toUint(value > (1 << 32) - 1);\n value >>= isGt * 32;\n result += isGt * 4;\n\n isGt = SafeCast.toUint(value > (1 << 16) - 1);\n value >>= isGt * 16;\n result += isGt * 2;\n\n result += SafeCast.toUint(value > (1 << 8) - 1);\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 + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool 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 */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev An uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\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 function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\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 function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\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 function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\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 function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\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 function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\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 function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\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 function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\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 function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\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 function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\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 function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\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 function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\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 function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\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 function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\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 function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\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 function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\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 function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\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 function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\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 function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\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 function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\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 function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\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 function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\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 function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\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 function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\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 function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\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 function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\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 function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\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 function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\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 function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\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 function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\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 function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\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 function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\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 function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\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 function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\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 function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\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 function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\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 function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\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 function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\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 function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\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 function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\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 function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\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 function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\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 function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\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 function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\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 function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\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 function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\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 function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\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 function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\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 function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\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 function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\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 function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\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 function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\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 function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\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 function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\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 function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\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 function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\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 function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\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 function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\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 function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\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 function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\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 function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\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 function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\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 function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\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 function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\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 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 if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n\n /**\n * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n */\n function toUint(bool b) internal pure returns (uint256 u) {\n assembly (\"memory-safe\") {\n u := iszero(iszero(b))\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n }\n }\n\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return ternary(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 ternary(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 // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n int256 mask = n >> 255;\n\n // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n return uint256((n + mask) ^ mask);\n }\n }\n}\n" + }, + "src/JBProjects.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {ERC721} from \"@openzeppelin/contracts/token/ERC721/ERC721.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {IJBProjects} from \"./interfaces/IJBProjects.sol\";\nimport {IJBTokenUriResolver} from \"./interfaces/IJBTokenUriResolver.sol\";\n\n/// @notice Stores project ownership and metadata.\n/// @dev Projects are represented as ERC-721s.\ncontract JBProjects is ERC721, Ownable, IJBProjects {\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice The number of projects that have been created using this contract.\n /// @dev The count is incremented with each new project created.\n /// @dev The resulting ERC-721 token ID for each project is the newly incremented count value.\n uint256 public override count;\n\n /// @notice The contract resolving each project ID to its ERC721 URI.\n IJBTokenUriResolver public override tokenUriResolver;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param owner The owner of the contract who can set metadata.\n /// @param feeProjectOwner The address that will receive the fee-project. If `address(0)` the fee-project will not\n /// be minted.\n constructor(address owner, address feeProjectOwner) ERC721(\"Juicebox Projects\", \"JUICEBOX\") Ownable(owner) {\n if (feeProjectOwner != address(0)) {\n createFor(feeProjectOwner);\n }\n }\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Indicates whether this contract adheres to the specified interface.\n /// @dev See {IERC165-supportsInterface}.\n /// @param interfaceId The ID of the interface to check for adherence to.\n /// @return A flag indicating if the provided interface ID is supported.\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n return interfaceId == type(IJBProjects).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /// @notice Returns the URI where the ERC-721 standard JSON of a project is hosted.\n /// @param projectId The ID of the project to get a URI of.\n /// @return The token URI to use for the provided `projectId`.\n function tokenURI(uint256 projectId) public view override returns (string memory) {\n // Keep a reference to the resolver.\n IJBTokenUriResolver resolver = tokenUriResolver;\n\n // If there's no resolver, there's no URI.\n if (resolver == IJBTokenUriResolver(address(0))) return \"\";\n\n // Return the resolved URI.\n return resolver.getUri(projectId);\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Sets the address of the resolver used to retrieve the tokenURI of projects.\n /// @param resolver The address of the new resolver.\n function setTokenUriResolver(IJBTokenUriResolver resolver) external override onlyOwner {\n // Store the new resolver.\n tokenUriResolver = resolver;\n\n emit SetTokenUriResolver({resolver: resolver, caller: _msgSender()});\n }\n\n //*********************************************************************//\n // ---------------------- public transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\n /// @dev Anyone can create a project on an owner's behalf.\n /// @param owner The address that will be the owner of the project.\n /// @return projectId The token ID of the newly created project.\n function createFor(address owner) public override returns (uint256 projectId) {\n // Increment the count, which will be used as the ID.\n projectId = ++count;\n\n emit Create({projectId: projectId, owner: owner, caller: _msgSender()});\n\n // Mint the project.\n _safeMint(owner, projectId);\n }\n}\n" + }, + "src/interfaces/IJBProjects.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC721} from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\n\nimport {IJBTokenUriResolver} from \"./IJBTokenUriResolver.sol\";\n\ninterface IJBProjects is IERC721 {\n event Create(uint256 indexed projectId, address indexed owner, address caller);\n event SetTokenUriResolver(IJBTokenUriResolver indexed resolver, address caller);\n\n function count() external view returns (uint256);\n function tokenUriResolver() external view returns (IJBTokenUriResolver);\n\n function createFor(address owner) external returns (uint256 projectId);\n function setTokenUriResolver(IJBTokenUriResolver resolver) external;\n}\n" + }, + "src/interfaces/IJBTokenUriResolver.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBTokenUriResolver {\n function getUri(uint256 projectId) external view returns (string memory tokenUri);\n}\n" + }, + "src/JBDirectory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBPermissionIds} from \"@bananapus/permission-ids/src/JBPermissionIds.sol\";\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBPermissioned} from \"./abstract/JBPermissioned.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBDirectoryAccessControl} from \"./interfaces/IJBDirectoryAccessControl.sol\";\nimport {IJBMigratable} from \"./interfaces/IJBMigratable.sol\";\nimport {IJBPermissions} from \"./interfaces/IJBPermissions.sol\";\nimport {IJBProjects} from \"./interfaces/IJBProjects.sol\";\nimport {IJBTerminal} from \"./interfaces/IJBTerminal.sol\";\n\n/// @notice `JBDirectory` tracks the terminals and the controller used by each project.\n/// @dev Tracks which `IJBTerminal`s each project is currently accepting funds through, and which `IJBController` is\n/// managing each project's tokens and rulesets.\ncontract JBDirectory is JBPermissioned, Ownable, IJBDirectory {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBDirectory_DuplicateTerminals(IJBTerminal terminal);\n error JBDirectory_InvalidProjectIdInDirectory(uint256 projectId, uint256 limit);\n error JBDirectory_SetControllerNotAllowed();\n error JBDirectory_SetTerminalsNotAllowed();\n error JBDirectory_TokenNotAccepted(uint256 projectId, address token, IJBTerminal terminal);\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice Mints ERC-721s that represent project ownership and transfers.\n IJBProjects public immutable override PROJECTS;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice The specified project's controller, which dictates how its terminals interact with its tokens and\n /// rulesets.\n /// @custom:param projectId The ID of the project to get the controller of.\n mapping(uint256 projectId => IERC165) public override controllerOf;\n\n /// @notice Whether the specified address is allowed to set a project's first controller on their behalf.\n /// @dev These addresses/contracts have been vetted by this contract's owner.\n /// @custom:param addr The address to check.\n mapping(address addr => bool) public override isAllowedToSetFirstController;\n\n //*********************************************************************//\n // --------------------- internal stored properties ------------------ //\n //*********************************************************************//\n\n /// @notice The primary terminal that a project uses for the specified token.\n /// @custom:param projectId The ID of the project to get the primary terminal of.\n /// @custom:param token The token that the terminal accepts.\n mapping(uint256 projectId => mapping(address token => IJBTerminal)) internal _primaryTerminalOf;\n\n /// @notice The specified project's terminals.\n /// @custom:param projectId The ID of the project to get the terminals of.\n mapping(uint256 projectId => IJBTerminal[]) internal _terminalsOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param permissions A contract storing permissions.\n /// @param projects A contract which mints ERC-721s that represent project ownership and transfers.\n /// @param owner The address that will own the contract.\n constructor(\n IJBPermissions permissions,\n IJBProjects projects,\n address owner\n )\n JBPermissioned(permissions)\n Ownable(owner)\n {\n PROJECTS = projects;\n }\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice The primary terminal that a project uses for the specified token.\n /// @dev Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal\n /// for it.\n /// @dev Returns the zero address if no terminal accepts the token.\n /// @param projectId The ID of the project to get the primary terminal of.\n /// @param token The token that the terminal accepts.\n /// @return The primary terminal's address.\n function primaryTerminalOf(uint256 projectId, address token) external view override returns (IJBTerminal) {\n // Keep a reference to the primary terminal for the provided project ID and token.\n IJBTerminal primaryTerminal = _primaryTerminalOf[projectId][token];\n\n // If a primary terminal for the token was explicitly set and it's one of the project's terminals, return it.\n if (primaryTerminal != IJBTerminal(address(0)) && isTerminalOf(projectId, primaryTerminal)) {\n return primaryTerminal;\n }\n\n // Keep a reference to the project's terminals.\n IJBTerminal[] memory terminals = _terminalsOf[projectId];\n\n // Keep a reference to the number of terminals the project has.\n uint256 numberOfTerminals = terminals.length;\n\n // Return the first terminal which accepts the specified token.\n for (uint256 i; i < numberOfTerminals; i++) {\n // Keep a reference to the terminal being iterated on.\n IJBTerminal terminal = terminals[i];\n\n // If the terminal accepts the specified token, return it.\n // slither-disable-next-line calls-loop\n if (terminal.accountingContextForTokenOf(projectId, token).token != address(0)) {\n return terminal;\n }\n }\n\n // Not found.\n return IJBTerminal(address(0));\n }\n\n /// @notice The specified project's terminals.\n /// @param projectId The ID of the project to get the terminals of.\n /// @return An array of the project's terminal addresses.\n function terminalsOf(uint256 projectId) external view override returns (IJBTerminal[] memory) {\n return _terminalsOf[projectId];\n }\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Check if a project uses a specific terminal.\n /// @param projectId The ID of the project to check.\n /// @param terminal The terminal to check for.\n /// @return A flag indicating whether the project uses the terminal.\n function isTerminalOf(uint256 projectId, IJBTerminal terminal) public view override returns (bool) {\n // Keep a reference to the project's terminals.\n IJBTerminal[] memory terminals = _terminalsOf[projectId];\n\n // Keep a reference to the number of terminals the project has.\n uint256 numberOfTerminals = terminals.length;\n\n // Loop through and return true if the terminal is found.\n for (uint256 i; i < numberOfTerminals; i++) {\n if (terminals[i] == terminal) return true;\n }\n\n // Otherwise, return false.\n return false;\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Add or remove an address/contract from a list of trusted addresses which are allowed to set a first\n /// controller for projects.\n /// @dev Only this contract's owner can call this function.\n /// @dev These addresses are vetted controllers as well as contracts designed to launch new projects.\n /// @dev A project can set its own controller without being on this list.\n /// @dev If you would like to add an address/contract to this list, please reach out to this contract's owner.\n /// @param addr The address to allow or not allow.\n /// @param flag Whether the address is allowed to set first controllers for projects. Use `true` to allow and\n /// `false` to not allow.\n function setIsAllowedToSetFirstController(address addr, bool flag) external override onlyOwner {\n // Set the flag in the allowlist.\n isAllowedToSetFirstController[addr] = flag;\n\n emit SetIsAllowedToSetFirstController({addr: addr, isAllowed: flag, caller: msg.sender});\n }\n\n /// @notice Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\n /// @dev Can only be called if:\n /// - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an\n /// address with the owner's permission to `SET_CONTROLLER`.\n /// - OR the message's sender is the project's current controller.\n /// - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\n /// @param projectId The ID of the project whose controller is being set.\n /// @param controller The address of the controller to set.\n function setControllerOf(uint256 projectId, IERC165 controller) external override {\n // Enforce permissions.\n _requirePermissionAllowingOverrideFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_CONTROLLER,\n alsoGrantAccessIf: (isAllowedToSetFirstController[msg.sender] && address(controllerOf[projectId]) == address(0))\n });\n\n // The project must exist.\n if (projectId > PROJECTS.count()) revert JBDirectory_InvalidProjectIdInDirectory(projectId, PROJECTS.count());\n\n // Keep a reference to the current controller.\n IERC165 currentController = controllerOf[projectId];\n\n // Get a reference to a flag indicating whether the project is allowed to set its controller.\n // Setting the controller is allowed if the project doesn't have a controller,\n // OR if the caller is the current controller,\n // OR if the project's ruleset allows setting the controller.\n bool allowSetController = address(currentController) == address(0)\n || !currentController.supportsInterface(type(IJBDirectoryAccessControl).interfaceId)\n ? true\n : IJBDirectoryAccessControl(address(currentController)).setControllerAllowed(projectId);\n\n // If setting the controller is not allowed, revert.\n if (!allowSetController) {\n revert JBDirectory_SetControllerNotAllowed();\n }\n\n // Set the new controller.\n controllerOf[projectId] = controller;\n\n emit SetController({projectId: projectId, controller: controller, caller: msg.sender});\n\n // Migrate if needed.\n if (\n address(currentController) != address(0)\n && currentController.supportsInterface(type(IJBMigratable).interfaceId)\n ) {\n IJBMigratable(address(currentController)).migrate(projectId, controller);\n }\n }\n\n /// @notice Set a project's primary terminal for a token.\n /// @dev The primary terminal for a token is where payments in that token are routed to by default.\n /// @dev This is useful in cases where a project has multiple terminals which accept the same token.\n /// @dev Can only be called by the project's owner, or an address with the owner's permission to\n /// `SET_PRIMARY_TERMINAL`.\n /// @param projectId The ID of the project whose primary terminal is being set.\n /// @param token The token to set the primary terminal for.\n /// @param terminal The terminal being set as the primary terminal.\n function setPrimaryTerminalOf(uint256 projectId, address token, IJBTerminal terminal) external override {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_PRIMARY_TERMINAL\n });\n\n // If the terminal doesn't accept the token, revert.\n if (terminal.accountingContextForTokenOf(projectId, token).token == address(0)) {\n revert JBDirectory_TokenNotAccepted(projectId, token, terminal);\n }\n\n // If the terminal hasn't already been added to the project, add it.\n _addTerminalIfNeeded(projectId, terminal);\n\n // Store the terminal as the project's primary terminal for the token.\n _primaryTerminalOf[projectId][token] = terminal;\n\n emit SetPrimaryTerminal({projectId: projectId, token: token, terminal: terminal, caller: msg.sender});\n }\n\n /// @notice Set a project's terminals.\n /// @dev Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or\n /// the project's controller.\n /// @dev Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\n /// @param projectId The ID of the project whose terminals are being set.\n /// @param terminals An array of terminal addresses to set for the project.\n function setTerminalsOf(uint256 projectId, IJBTerminal[] calldata terminals) external override {\n // Enforce permissions.\n _requirePermissionAllowingOverrideFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_TERMINALS,\n alsoGrantAccessIf: msg.sender == address(controllerOf[projectId])\n });\n\n // Keep a reference to the project's controller.\n IERC165 controller = controllerOf[projectId];\n\n // Get a reference to the flag indicating whether the project is allowed to set its terminals.\n bool allowSetTerminals = !controller.supportsInterface(type(IJBDirectoryAccessControl).interfaceId)\n || IJBDirectoryAccessControl(address(controller)).setTerminalsAllowed(projectId);\n\n // If the caller is not the project's controller, the project's ruleset must allow setting terminals.\n if (msg.sender != address(controllerOf[projectId]) && !allowSetTerminals) {\n revert JBDirectory_SetTerminalsNotAllowed();\n }\n\n // Set the stored terminals for the project.\n _terminalsOf[projectId] = terminals;\n\n // If there are any duplicates, revert.\n if (terminals.length > 1) {\n for (uint256 i; i < terminals.length; i++) {\n for (uint256 j = i + 1; j < terminals.length; j++) {\n if (terminals[i] == terminals[j]) revert JBDirectory_DuplicateTerminals(terminals[i]);\n }\n }\n }\n emit SetTerminals({projectId: projectId, terminals: terminals, caller: msg.sender});\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice If a terminal hasn't already been added to a project's list of terminals, add it.\n /// @dev The project's ruleset must have `allowSetTerminals` set to `true`.\n /// @param projectId The ID of the project to add the terminal to.\n /// @param terminal The terminal to add.\n function _addTerminalIfNeeded(uint256 projectId, IJBTerminal terminal) internal {\n // Ensure that the terminal has not already been added.\n if (isTerminalOf(projectId, terminal)) return;\n\n // Keep a reference to the current controller.\n IERC165 controller = controllerOf[projectId];\n\n // Get a reference to a flag indicating whether the project is allowed to set its terminals.\n bool allowSetTerminals = !controller.supportsInterface(type(IJBDirectoryAccessControl).interfaceId)\n || IJBDirectoryAccessControl(address(controller)).setTerminalsAllowed(projectId);\n\n // The project's ruleset must allow setting terminals.\n if (!allowSetTerminals) {\n revert JBDirectory_SetTerminalsNotAllowed();\n }\n\n // Add the new terminal.\n _terminalsOf[projectId].push(terminal);\n\n emit AddTerminal({projectId: projectId, terminal: terminal, caller: msg.sender});\n }\n}\n" + }, + "src/abstract/JBPermissioned.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\n\nimport {IJBPermissioned} from \"./../interfaces/IJBPermissioned.sol\";\nimport {IJBPermissions} from \"./../interfaces/IJBPermissions.sol\";\n\n/// @notice Modifiers to allow access to transactions based on which permissions the message's sender has.\nabstract contract JBPermissioned is Context, IJBPermissioned {\n //*********************************************************************//\n // --------------------------- custom errors -------------------------- //\n //*********************************************************************//\n\n error JBPermissioned_Unauthorized(address account, address sender, uint256 projectId, uint256 permissionId);\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice A contract storing permissions.\n IJBPermissions public immutable override PERMISSIONS;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param permissions A contract storing permissions.\n constructor(IJBPermissions permissions) {\n PERMISSIONS = permissions;\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice Require the message sender to be the account or have the relevant permission.\n /// @param account The account to allow.\n /// @param projectId The project ID to check the permission under.\n /// @param permissionId The required permission ID. The operator must have this permission within the specified\n /// project ID.\n function _requirePermissionFrom(address account, uint256 projectId, uint256 permissionId) internal view {\n address sender = _msgSender();\n if (\n sender != account\n && !PERMISSIONS.hasPermission({\n operator: sender,\n account: account,\n projectId: projectId,\n permissionId: permissionId,\n includeRoot: true,\n includeWildcardProjectId: true\n })\n ) revert JBPermissioned_Unauthorized(account, sender, projectId, permissionId);\n }\n\n /// @notice If the 'alsoGrantAccessIf' condition is truthy, proceed. Otherwise, require the message sender to be the\n /// account or\n /// have the relevant permission.\n /// @param account The account to allow.\n /// @param projectId The project ID to check the permission under.\n /// @param permissionId The required permission ID. The operator must have this permission within the specified\n /// project ID.\n /// @param alsoGrantAccessIf An override condition which will allow access regardless of permissions.\n function _requirePermissionAllowingOverrideFrom(\n address account,\n uint256 projectId,\n uint256 permissionId,\n bool alsoGrantAccessIf\n )\n internal\n view\n {\n if (alsoGrantAccessIf) return;\n _requirePermissionFrom(account, projectId, permissionId);\n }\n}\n" + }, + "src/interfaces/IJBDirectory.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {IJBProjects} from \"./IJBProjects.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\n\ninterface IJBDirectory {\n event AddTerminal(uint256 indexed projectId, IJBTerminal indexed terminal, address caller);\n event SetController(uint256 indexed projectId, IERC165 indexed controller, address caller);\n event SetIsAllowedToSetFirstController(address indexed addr, bool indexed isAllowed, address caller);\n event SetPrimaryTerminal(\n uint256 indexed projectId, address indexed token, IJBTerminal indexed terminal, address caller\n );\n event SetTerminals(uint256 indexed projectId, IJBTerminal[] terminals, address caller);\n\n function PROJECTS() external view returns (IJBProjects);\n\n function controllerOf(uint256 projectId) external view returns (IERC165);\n function isAllowedToSetFirstController(address account) external view returns (bool);\n function isTerminalOf(uint256 projectId, IJBTerminal terminal) external view returns (bool);\n function primaryTerminalOf(uint256 projectId, address token) external view returns (IJBTerminal);\n function terminalsOf(uint256 projectId) external view returns (IJBTerminal[] memory);\n\n function setControllerOf(uint256 projectId, IERC165 controller) external;\n function setIsAllowedToSetFirstController(address account, bool flag) external;\n function setPrimaryTerminalOf(uint256 projectId, address token, IJBTerminal terminal) external;\n function setTerminalsOf(uint256 projectId, IJBTerminal[] calldata terminals) external;\n}\n" + }, + "src/interfaces/IJBDirectoryAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBDirectoryAccessControl {\n function setControllerAllowed(uint256 projectId) external view returns (bool);\n function setTerminalsAllowed(uint256 projectId) external view returns (bool);\n}\n" + }, + "src/interfaces/IJBMigratable.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\ninterface IJBMigratable is IERC165 {\n event Migrate(uint256 indexed projectId, IERC165 to, address caller);\n\n function migrate(uint256 projectId, IERC165 to) external;\n function receiveMigrationFrom(IERC165 from, uint256 projectId) external;\n}\n" + }, + "src/interfaces/IJBPayHook.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBAfterPayRecordedContext} from \"./../structs/JBAfterPayRecordedContext.sol\";\n\n/// @notice Hook called after a terminal's `pay(...)` logic completes (if passed by the ruleset's data hook).\ninterface IJBPayHook is IERC165 {\n /// @notice This function is called by the terminal's `pay(...)` function after the payment has been recorded in the\n /// terminal store.\n /// @dev Critical business logic should be protected by appropriate access control.\n /// @param context The context passed in by the terminal, as a `JBAfterPayRecordedContext` struct.\n function afterPayRecordedWith(JBAfterPayRecordedContext calldata context) external payable;\n}\n" + }, + "src/interfaces/IJBPermissioned.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBPermissions} from \"./IJBPermissions.sol\";\n\ninterface IJBPermissioned {\n function PERMISSIONS() external view returns (IJBPermissions);\n}\n" + }, + "src/interfaces/IJBTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {IJBPayHook} from \"./IJBPayHook.sol\";\nimport {JBAccountingContext} from \"../structs/JBAccountingContext.sol\";\nimport {JBAfterPayRecordedContext} from \"../structs/JBAfterPayRecordedContext.sol\";\n\n/// @notice A terminal that accepts payments and can be migrated.\ninterface IJBTerminal is IERC165 {\n event AddToBalance(\n uint256 indexed projectId, uint256 amount, uint256 returnedFees, string memo, bytes metadata, address caller\n );\n event HookAfterRecordPay(\n IJBPayHook indexed hook, JBAfterPayRecordedContext context, uint256 specificationAmount, address caller\n );\n\n event MigrateTerminal(\n uint256 indexed projectId, address indexed token, IJBTerminal indexed to, uint256 amount, address caller\n );\n event Pay(\n uint256 indexed rulesetId,\n uint256 indexed rulesetCycleNumber,\n uint256 indexed projectId,\n address payer,\n address beneficiary,\n uint256 amount,\n uint256 newlyIssuedTokenCount,\n string memo,\n bytes metadata,\n address caller\n );\n event SetAccountingContext(uint256 indexed projectId, JBAccountingContext context, address caller);\n\n function accountingContextForTokenOf(\n uint256 projectId,\n address token\n )\n external\n view\n returns (JBAccountingContext memory);\n function accountingContextsOf(uint256 projectId) external view returns (JBAccountingContext[] memory);\n function currentSurplusOf(\n uint256 projectId,\n JBAccountingContext[] memory accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n returns (uint256);\n\n function addAccountingContextsFor(uint256 projectId, JBAccountingContext[] calldata accountingContexts) external;\n function addToBalanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n bool shouldReturnHeldFees,\n string calldata memo,\n bytes calldata metadata\n )\n external\n payable;\n function migrateBalanceOf(uint256 projectId, address token, IJBTerminal to) external returns (uint256 balance);\n function pay(\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n uint256 minReturnedTokens,\n string calldata memo,\n bytes calldata metadata\n )\n external\n payable\n returns (uint256 beneficiaryTokenCount);\n}\n" + }, + "src/structs/JBAccountingContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member token The address of the token that accounting is being done with.\n/// @custom:member decimals The number of decimals expected in that token's fixed point accounting.\n/// @custom:member currency The currency that the token is priced in terms of. By convention, this is\n/// `uint32(uint160(tokenAddress))` for tokens, or a constant ID from e.g. `JBCurrencyIds` for other currencies.\nstruct JBAccountingContext {\n address token;\n uint8 decimals;\n uint32 currency;\n}\n" + }, + "src/structs/JBAfterPayRecordedContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBTokenAmount} from \"./JBTokenAmount.sol\";\n\n/// @custom:member payer The address the payment originated from.\n/// @custom:member projectId The ID of the project being paid.\n/// @custom:member rulesetId The ID of the ruleset the payment is being made during.\n/// @custom:member amount The payment's token amount. Includes the token being paid, the value, the number of decimals\n/// included, and the currency of the amount.\n/// @custom:member forwardedAmount The token amount being forwarded to the pay hook. Includes the token\n/// being paid, the value, the number of decimals included, and the currency of the amount.\n/// @custom:member weight The current ruleset's weight (used to determine how many tokens should be minted).\n/// @custom:member newlyIssuedTokenCount The number of project tokens minted for the beneficiary.\n/// @custom:member beneficiary The address which receives any tokens this payment yields.\n/// @custom:member hookMetadata Extra data specified by the data hook, which is sent to the pay hook.\n/// @custom:member payerMetadata Extra data specified by the payer, which is sent to the pay hook.\nstruct JBAfterPayRecordedContext {\n address payer;\n uint256 projectId;\n uint256 rulesetId;\n JBTokenAmount amount;\n JBTokenAmount forwardedAmount;\n uint256 weight;\n uint256 newlyIssuedTokenCount;\n address beneficiary;\n bytes hookMetadata;\n bytes payerMetadata;\n}\n" + }, + "src/structs/JBTokenAmount.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member token The token the payment was made in.\n/// @custom:member decimals The number of decimals included in the value fixed point number.\n/// @custom:member currency The currency. By convention, this is `uint32(uint160(tokenAddress))` for tokens, or a\n/// constant ID from e.g. `JBCurrencyIds` for other currencies.\n/// @custom:member value The amount of tokens that was paid, as a fixed point number.\nstruct JBTokenAmount {\n address token;\n uint8 decimals;\n uint32 currency;\n uint256 value;\n}\n" + }, + "src/JBSplits.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBControlled} from \"./abstract/JBControlled.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBSplitHook} from \"./interfaces/IJBSplitHook.sol\";\nimport {IJBSplits} from \"./interfaces/IJBSplits.sol\";\nimport {JBConstants} from \"./libraries/JBConstants.sol\";\nimport {JBSplit} from \"./structs/JBSplit.sol\";\nimport {JBSplitGroup} from \"./structs/JBSplitGroup.sol\";\n\n/// @notice Stores and manages splits for each project.\ncontract JBSplits is JBControlled, IJBSplits {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBSplits_TotalPercentExceeds100();\n error JBSplits_PreviousLockedSplitsNotIncluded();\n error JBSplits_ZeroSplitPercent();\n\n //*********************************************************************//\n // ------------------------- public constants ------------------------ //\n //*********************************************************************//\n\n /// @notice The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\n uint256 public constant override FALLBACK_RULESET_ID = 0;\n\n //*********************************************************************//\n // --------------------- internal stored properties ------------------ //\n //*********************************************************************//\n\n /// @notice Packed split data given the split's project, ruleset, and group IDs, as well as the split's index within\n /// that group.\n /// @dev `preferAddToBalance` in bit 0, `percent` in bits 1-32, `projectId` in bits 33-88, and `beneficiary` in bits\n /// 89-248\n /// @custom:param projectId The ID of the project that the split applies to.\n /// @custom:param rulesetId The ID of the ruleset that the group is in.\n /// @custom:param groupId The ID of the group the split is in.\n /// @custom:param index The split's index within the group (in the order that the split were set).\n /// @custom:return The split's `preferAddToBalance`, `percent`, `projectId`, and `beneficiary` packed into one\n /// `uint256`.\n mapping(\n uint256 projectId => mapping(uint256 rulesetId => mapping(uint256 groupId => mapping(uint256 index => uint256)))\n ) internal _packedSplitParts1Of;\n\n /// @notice More packed split data given the split's project, ruleset, and group IDs, as well as the split's index\n /// within that group.\n /// @dev `lockedUntil` in bits 0-47, `hook` address in bits 48-207.\n /// @dev This packed data is often 0.\n /// @custom:param projectId The ID of the project that the ruleset applies to.\n /// @custom:param rulesetId The ID of the ruleset that the group is in.\n /// @custom:param groupId The ID of the group the split is in.\n /// @custom:param index The split's index within the group (in the order that the split were set).\n /// @custom:return The split's `lockedUntil` and `hook` packed into one `uint256`.\n mapping(\n uint256 projectId => mapping(uint256 rulesetId => mapping(uint256 groupId => mapping(uint256 index => uint256)))\n ) internal _packedSplitParts2Of;\n\n /// @notice The number of splits currently stored in a group given a project ID, ruleset ID, and group ID.\n /// @custom:param projectId The ID of the project the split applies to.\n /// @custom:param rulesetId The ID of the ruleset that the group is specified within.\n /// @custom:param groupId The ID of the group to count this splits of.\n mapping(uint256 projectId => mapping(uint256 rulesetId => mapping(uint256 groupId => uint256))) internal\n _splitCountOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n constructor(IJBDirectory directory) JBControlled(directory) {}\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice Get the split structs for the specified project ID, within the specified ruleset, for the specified\n /// group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific\n /// ruleset aren't set.\n /// @dev If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\n /// @param projectId The ID of the project to get splits for.\n /// @param rulesetId An identifier within which the returned splits should be considered active.\n /// @param groupId The identifying group of the splits.\n /// @return splits An array of all splits for the project.\n function splitsOf(\n uint256 projectId,\n uint256 rulesetId,\n uint256 groupId\n )\n external\n view\n override\n returns (JBSplit[] memory splits)\n {\n splits = _getStructsFor(projectId, rulesetId, groupId);\n\n // Use the default splits if there aren't any for the ruleset.\n if (splits.length == 0) {\n splits = _getStructsFor({projectId: projectId, rulesetId: FALLBACK_RULESET_ID, groupId: groupId});\n }\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice Unpack an array of `JBSplit` structs for all of the splits in a group, given project, ruleset, and group\n /// IDs.\n /// @param projectId The ID of the project the splits belong to.\n /// @param rulesetId The ID of the ruleset the group of splits should be considered active within.\n /// @param groupId The ID of the group to get the splits structs of.\n /// @return splits The split structs, as an array of `JBSplit`s.\n function _getStructsFor(\n uint256 projectId,\n uint256 rulesetId,\n uint256 groupId\n )\n internal\n view\n returns (JBSplit[] memory)\n {\n // Get a reference to the number of splits that need to be added to the returned array.\n uint256 splitCount = _splitCountOf[projectId][rulesetId][groupId];\n\n // Initialize an array to be returned that has the appropriate length.\n JBSplit[] memory splits = new JBSplit[](splitCount);\n\n // Loop through each split and unpack the values into structs.\n for (uint256 i; i < splitCount; i++) {\n // Get a reference to the first part of the split's packed data.\n uint256 packedSplitPart1 = _packedSplitParts1Of[projectId][rulesetId][groupId][i];\n\n // Populate the split struct.\n JBSplit memory split;\n\n // `preferAddToBalance` in bit 0.\n split.preferAddToBalance = packedSplitPart1 & 1 == 1;\n // `percent` in bits 1-32.\n split.percent = uint32(packedSplitPart1 >> 1);\n // `projectId` in bits 33-88.\n split.projectId = uint56(packedSplitPart1 >> 33);\n // `beneficiary` in bits 89-248.\n split.beneficiary = payable(address(uint160(packedSplitPart1 >> 89)));\n\n // Get a reference to the second part of the split's packed data.\n uint256 packedSplitPart2 = _packedSplitParts2Of[projectId][rulesetId][groupId][i];\n\n // If there's anything in it, unpack.\n if (packedSplitPart2 > 0) {\n // `lockedUntil` in bits 0-47.\n split.lockedUntil = uint48(packedSplitPart2);\n // `hook` in bits 48-207.\n split.hook = IJBSplitHook(address(uint160(packedSplitPart2 >> 48)));\n }\n\n // Add the split to the value being returned.\n splits[i] = split;\n }\n\n return splits;\n }\n\n /// @notice Determine if the provided splits array includes the locked split.\n /// @param splits The array of splits to check within.\n /// @param lockedSplit The locked split.\n /// @return A flag indicating if the `lockedSplit` is contained in the `splits`.\n function _includesLockedSplits(JBSplit[] memory splits, JBSplit memory lockedSplit) internal pure returns (bool) {\n // Keep a reference to the number of splits.\n uint256 numberOfSplits = splits.length;\n\n for (uint256 i; i < numberOfSplits; i++) {\n // Set the split being iterated on.\n JBSplit memory split = splits[i];\n\n // Check for sameness.\n if (\n // Allow the lock to be extended.\n split.percent == lockedSplit.percent && split.beneficiary == lockedSplit.beneficiary\n && split.hook == lockedSplit.hook && split.projectId == lockedSplit.projectId\n && split.preferAddToBalance == lockedSplit.preferAddToBalance\n && split.lockedUntil >= lockedSplit.lockedUntil\n ) return true;\n }\n\n return false;\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Sets a project's split groups.\n /// @dev Only a project's controller can set its splits.\n /// @dev The new split groups must include any currently set splits that are locked.\n /// @param projectId The ID of the project to set the split groups of.\n /// @param rulesetId The ID of the ruleset the split groups should be active in. Send\n /// 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the\n /// project's owner.\n /// @param splitGroups An array of split groups to set.\n function setSplitGroupsOf(\n uint256 projectId,\n uint256 rulesetId,\n JBSplitGroup[] calldata splitGroups\n )\n external\n override\n onlyControllerOf(projectId)\n {\n // Set each grouped splits.\n for (uint256 i; i < splitGroups.length; i++) {\n // Get a reference to the grouped split being iterated on.\n JBSplitGroup memory splitGroup = splitGroups[i];\n\n // Set the splits for the group.\n _setSplitsOf(projectId, rulesetId, splitGroup.groupId, splitGroup.splits);\n }\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice Sets the splits for a group given a project, ruleset, and group ID.\n /// @dev The new splits must include any currently set splits that are locked.\n /// @dev The sum of the split `percent`s within one group must be less than 100%.\n /// @param projectId The ID of the project splits are being set for.\n /// @param rulesetId The ID of the ruleset the splits should be considered active within.\n /// @param groupId The ID of the group to set the splits within.\n /// @param splits An array of splits to set.\n function _setSplitsOf(uint256 projectId, uint256 rulesetId, uint256 groupId, JBSplit[] memory splits) internal {\n // Get a reference to the current split structs within the project, ruleset, and group.\n JBSplit[] memory currentSplits = _getStructsFor(projectId, rulesetId, groupId);\n\n // Keep a reference to the current number of splits within the group.\n uint256 numberOfCurrentSplits = currentSplits.length;\n\n // Check to see if all locked splits are included in the array of splits which is being set.\n for (uint256 i; i < numberOfCurrentSplits; i++) {\n // If not locked, continue.\n if (block.timestamp < currentSplits[i].lockedUntil && !_includesLockedSplits(splits, currentSplits[i])) {\n revert JBSplits_PreviousLockedSplitsNotIncluded();\n }\n }\n\n // Add up all the `percent`s to make sure their total is under 100%.\n uint256 percentTotal;\n\n // Keep a reference to the number of splits to set.\n uint256 numberOfSplits = splits.length;\n\n for (uint256 i; i < numberOfSplits; i++) {\n // Set the split being iterated on.\n JBSplit memory split = splits[i];\n\n // The percent should be greater than 0.\n if (split.percent == 0) revert JBSplits_ZeroSplitPercent();\n\n // Add to the `percent` total.\n percentTotal += split.percent;\n\n // Ensure the total does not exceed 100%.\n if (percentTotal > JBConstants.SPLITS_TOTAL_PERCENT) revert JBSplits_TotalPercentExceeds100();\n\n uint256 packedSplitParts1;\n\n // Pack `preferAddToBalance` in bit 0.\n if (split.preferAddToBalance) packedSplitParts1 = 1;\n // Pack `percent` in bits 1-32.\n packedSplitParts1 |= split.percent << 1;\n // Pack `projectId` in bits 33-88.\n packedSplitParts1 |= split.projectId << 33;\n // Pack `beneficiary` in bits 89-248.\n packedSplitParts1 |= uint256(uint160(address(split.beneficiary))) << 89;\n\n // Store the first split part.\n _packedSplitParts1Of[projectId][rulesetId][groupId][i] = packedSplitParts1;\n\n // If there's data to store in the second packed split part, pack and store.\n if (split.lockedUntil > 0 || split.hook != IJBSplitHook(address(0))) {\n // Pack `lockedUntil` in bits 0-47.\n uint256 packedSplitParts2 = uint48(split.lockedUntil);\n // Pack `hook` in bits 48-207.\n packedSplitParts2 |= uint256(uint160(address(split.hook))) << 48;\n\n // Store the second split part.\n _packedSplitParts2Of[projectId][rulesetId][groupId][i] = packedSplitParts2;\n } else if (_packedSplitParts2Of[projectId][rulesetId][groupId][i] > 0) {\n // If there's a value stored in the indexed position, delete it.\n delete _packedSplitParts2Of[projectId][rulesetId][groupId][i];\n }\n\n emit SetSplit({\n projectId: projectId,\n rulesetId: rulesetId,\n groupId: groupId,\n split: split,\n caller: msg.sender\n });\n }\n\n // Store the number of splits for the project, ruleset, and group.\n _splitCountOf[projectId][rulesetId][groupId] = numberOfSplits;\n }\n}\n" + }, + "src/abstract/JBControlled.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBControlled} from \"./../interfaces/IJBControlled.sol\";\nimport {IJBDirectory} from \"./../interfaces/IJBDirectory.sol\";\n\n/// @notice Provides a modifier for contracts with functionality that can only be accessed by a project's controller.\nabstract contract JBControlled is IJBControlled {\n //*********************************************************************//\n // --------------------------- custom errors -------------------------- //\n //*********************************************************************//\n\n error JBControlled_ControllerUnauthorized(address controller);\n\n //*********************************************************************//\n // ---------------------------- modifiers ---------------------------- //\n //*********************************************************************//\n\n /// @notice Only allows the controller of the specified project to proceed.\n /// @param projectId The ID of the project.\n modifier onlyControllerOf(uint256 projectId) {\n _onlyControllerOf(projectId);\n _;\n }\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice The directory of terminals and controllers for projects.\n IJBDirectory public immutable override DIRECTORY;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n constructor(IJBDirectory directory) {\n DIRECTORY = directory;\n }\n\n /// @notice Only allows the controller of the specified project to proceed.\n function _onlyControllerOf(uint256 projectId) internal view {\n if (address(DIRECTORY.controllerOf(projectId)) != msg.sender) {\n revert JBControlled_ControllerUnauthorized(address(DIRECTORY.controllerOf(projectId)));\n }\n }\n}\n" + }, + "src/interfaces/IJBControlled.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBDirectory} from \"./IJBDirectory.sol\";\n\ninterface IJBControlled {\n function DIRECTORY() external view returns (IJBDirectory);\n}\n" + }, + "src/interfaces/IJBSplitHook.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBSplitHookContext} from \"../structs/JBSplitHookContext.sol\";\n\n/// @title Split hook\n/// @notice Allows processing a single split with custom logic.\n/// @dev The split hook's address should be set as the `hook` in the relevant split.\ninterface IJBSplitHook is IERC165 {\n /// @notice If a split has a split hook, payment terminals and controllers call this function while processing the\n /// split.\n /// @dev Critical business logic should be protected by appropriate access control. The tokens and/or native tokens\n /// are optimistically transferred to the split hook when this function is called.\n /// @param context The context passed by the terminal/controller to the split hook as a `JBSplitHookContext` struct:\n function processSplitWith(JBSplitHookContext calldata context) external payable;\n}\n" + }, + "src/interfaces/IJBSplits.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBSplit} from \"./../structs/JBSplit.sol\";\nimport {JBSplitGroup} from \"./../structs/JBSplitGroup.sol\";\n\ninterface IJBSplits {\n event SetSplit(\n uint256 indexed projectId, uint256 indexed rulesetId, uint256 indexed groupId, JBSplit split, address caller\n );\n\n function FALLBACK_RULESET_ID() external view returns (uint256);\n\n function splitsOf(uint256 projectId, uint256 rulesetId, uint256 groupId) external view returns (JBSplit[] memory);\n\n function setSplitGroupsOf(uint256 projectId, uint256 rulesetId, JBSplitGroup[] memory splitGroups) external;\n}\n" + }, + "src/libraries/JBConstants.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @notice Global constants used across Juicebox contracts.\nlibrary JBConstants {\n /// @notice Each chain's native token address in Juicebox is represented by\n /// 0x000000000000000000000000000000000000EEEe.\n address public constant NATIVE_TOKEN = address(0x000000000000000000000000000000000000EEEe);\n uint16 public constant MAX_RESERVED_PERCENT = 10_000;\n uint16 public constant MAX_CASH_OUT_TAX_RATE = 10_000;\n uint32 public constant MAX_WEIGHT_CUT_PERCENT = 1_000_000_000;\n uint32 public constant SPLITS_TOTAL_PERCENT = 1_000_000_000;\n uint16 public constant MAX_FEE = 1000;\n}\n" + }, + "src/structs/JBSplit.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBSplitHook} from \"./../interfaces/IJBSplitHook.sol\";\n\n/// @notice Splits are used to send a percentage of a total token amount to a specific contract, project, or address.\n/// Splits are used to send payouts and reserved tokens.\n/// @dev 1. If a non-zero split hook contract is specified, this split's tokens are sent there along with this split's\n/// properties.\n/// @dev 2. Otherwise, if a non-zero project ID is specified, this split's tokens are used to `pay` it through its\n/// terminal if possible, or sent to the project's owner if not. If this payment yields tokens, those go to the split's\n/// `beneficiary`.\n/// @dev 3. Otherwise, this split's tokens are sent directly to the `beneficiary`.\n/// @dev To summarize, this split's tokens are sent according to the following priority: `split hook` > `projectId` >\n/// `beneficiary`.\n/// @custom:member preferAddToBalance If this split were to `pay` a project through its terminal, this flag indicates\n/// whether it should prefer using the terminal's `addToBalance` function instead.\n/// @custom:member percent The percent of the total token amount that this split sends. This number is out of\n/// `JBConstants.SPLITS_TOTAL_PERCENT`.\n/// @custom:member projectId The ID of a project to `pay`, if applicable. Resulting tokens will be routed to the\n/// `beneficiary`.\n/// @custom:member beneficiary Receives this split's tokens if the `hook` and `projectId` are zero. If the `projectId`\n/// is specified, the `beneficiary` receives any project tokens minted by this split.\n/// @custom:member lockedUntil The split cannot be changed until this timestamp. The `lockedUntil` timestamp can be\n/// increased while a split is locked. If `lockedUntil` is zero, this split can be changed at any time.\n/// @custom:member hook A contract which will receive this split's tokens and properties, and can define custom\n/// behavior.\nstruct JBSplit {\n bool preferAddToBalance;\n uint32 percent;\n uint56 projectId;\n address payable beneficiary;\n uint48 lockedUntil;\n IJBSplitHook hook;\n}\n" + }, + "src/structs/JBSplitGroup.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBSplit} from \"./JBSplit.sol\";\n\n/// @custom:member groupId An identifier for the group. By convention, this ID is `uint256(uint160(tokenAddress))` for\n/// payouts and `1` for reserved tokens.\n/// @custom:member splits The splits in the group.\nstruct JBSplitGroup {\n uint256 groupId;\n JBSplit[] splits;\n}\n" + }, + "src/structs/JBSplitHookContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBSplit} from \"./JBSplit.sol\";\n\n/// @custom:member token The token being sent to the split hook.\n/// @custom:member amount The amount being sent to the split hook, as a fixed point number.\n/// @custom:member decimals The number of decimals in the amount.\n/// @custom:member projectId The project the split belongs to.\n/// @custom:member groupId The group the split belongs to. By convention, this ID is `uint256(uint160(tokenAddress))`\n/// for payouts and `1` for reserved tokens.\n/// @custom:member split The split which specified the hook.\nstruct JBSplitHookContext {\n address token;\n uint256 amount;\n uint256 decimals;\n uint256 projectId;\n uint256 groupId;\n JBSplit split;\n}\n" + }, + "node_modules/@prb/math/src/Common.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.19;\n\n// Common.sol\n//\n// Common mathematical functions used in both SD59x18 and UD60x18. Note that these global functions do not\n// always operate with SD59x18 and UD60x18 numbers.\n\n/*//////////////////////////////////////////////////////////////////////////\n CUSTOM ERRORS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @notice Thrown when the resultant value in {mulDiv} overflows uint256.\nerror PRBMath_MulDiv_Overflow(uint256 x, uint256 y, uint256 denominator);\n\n/// @notice Thrown when the resultant value in {mulDiv18} overflows uint256.\nerror PRBMath_MulDiv18_Overflow(uint256 x, uint256 y);\n\n/// @notice Thrown when one of the inputs passed to {mulDivSigned} is `type(int256).min`.\nerror PRBMath_MulDivSigned_InputTooSmall();\n\n/// @notice Thrown when the resultant value in {mulDivSigned} overflows int256.\nerror PRBMath_MulDivSigned_Overflow(int256 x, int256 y);\n\n/*//////////////////////////////////////////////////////////////////////////\n CONSTANTS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @dev The maximum value a uint128 number can have.\nuint128 constant MAX_UINT128 = type(uint128).max;\n\n/// @dev The maximum value a uint40 number can have.\nuint40 constant MAX_UINT40 = type(uint40).max;\n\n/// @dev The maximum value a uint64 number can have.\nuint64 constant MAX_UINT64 = type(uint64).max;\n\n/// @dev The unit number, which the decimal precision of the fixed-point types.\nuint256 constant UNIT = 1e18;\n\n/// @dev The unit number inverted mod 2^256.\nuint256 constant UNIT_INVERSE = 78156646155174841979727994598816262306175212592076161876661_508869554232690281;\n\n/// @dev The the largest power of two that divides the decimal value of `UNIT`. The logarithm of this value is the least significant\n/// bit in the binary representation of `UNIT`.\nuint256 constant UNIT_LPOTD = 262144;\n\n/*//////////////////////////////////////////////////////////////////////////\n FUNCTIONS\n//////////////////////////////////////////////////////////////////////////*/\n\n/// @notice Calculates the binary exponent of x using the binary fraction method.\n/// @dev Has to use 192.64-bit fixed-point numbers. See https://ethereum.stackexchange.com/a/96594/24693.\n/// @param x The exponent as an unsigned 192.64-bit fixed-point number.\n/// @return result The result as an unsigned 60.18-decimal fixed-point number.\n/// @custom:smtchecker abstract-function-nondet\nfunction exp2(uint256 x) pure returns (uint256 result) {\n unchecked {\n // Start from 0.5 in the 192.64-bit fixed-point format.\n result = 0x800000000000000000000000000000000000000000000000;\n\n // The following logic multiplies the result by $\\sqrt{2^{-i}}$ when the bit at position i is 1. Key points:\n //\n // 1. Intermediate results will not overflow, as the starting point is 2^191 and all magic factors are under 2^65.\n // 2. The rationale for organizing the if statements into groups of 8 is gas savings. If the result of performing\n // a bitwise AND operation between x and any value in the array [0x80; 0x40; 0x20; 0x10; 0x08; 0x04; 0x02; 0x01] is 1,\n // we know that `x & 0xFF` is also 1.\n if (x & 0xFF00000000000000 > 0) {\n if (x & 0x8000000000000000 > 0) {\n result = (result * 0x16A09E667F3BCC909) >> 64;\n }\n if (x & 0x4000000000000000 > 0) {\n result = (result * 0x1306FE0A31B7152DF) >> 64;\n }\n if (x & 0x2000000000000000 > 0) {\n result = (result * 0x1172B83C7D517ADCE) >> 64;\n }\n if (x & 0x1000000000000000 > 0) {\n result = (result * 0x10B5586CF9890F62A) >> 64;\n }\n if (x & 0x800000000000000 > 0) {\n result = (result * 0x1059B0D31585743AE) >> 64;\n }\n if (x & 0x400000000000000 > 0) {\n result = (result * 0x102C9A3E778060EE7) >> 64;\n }\n if (x & 0x200000000000000 > 0) {\n result = (result * 0x10163DA9FB33356D8) >> 64;\n }\n if (x & 0x100000000000000 > 0) {\n result = (result * 0x100B1AFA5ABCBED61) >> 64;\n }\n }\n\n if (x & 0xFF000000000000 > 0) {\n if (x & 0x80000000000000 > 0) {\n result = (result * 0x10058C86DA1C09EA2) >> 64;\n }\n if (x & 0x40000000000000 > 0) {\n result = (result * 0x1002C605E2E8CEC50) >> 64;\n }\n if (x & 0x20000000000000 > 0) {\n result = (result * 0x100162F3904051FA1) >> 64;\n }\n if (x & 0x10000000000000 > 0) {\n result = (result * 0x1000B175EFFDC76BA) >> 64;\n }\n if (x & 0x8000000000000 > 0) {\n result = (result * 0x100058BA01FB9F96D) >> 64;\n }\n if (x & 0x4000000000000 > 0) {\n result = (result * 0x10002C5CC37DA9492) >> 64;\n }\n if (x & 0x2000000000000 > 0) {\n result = (result * 0x1000162E525EE0547) >> 64;\n }\n if (x & 0x1000000000000 > 0) {\n result = (result * 0x10000B17255775C04) >> 64;\n }\n }\n\n if (x & 0xFF0000000000 > 0) {\n if (x & 0x800000000000 > 0) {\n result = (result * 0x1000058B91B5BC9AE) >> 64;\n }\n if (x & 0x400000000000 > 0) {\n result = (result * 0x100002C5C89D5EC6D) >> 64;\n }\n if (x & 0x200000000000 > 0) {\n result = (result * 0x10000162E43F4F831) >> 64;\n }\n if (x & 0x100000000000 > 0) {\n result = (result * 0x100000B1721BCFC9A) >> 64;\n }\n if (x & 0x80000000000 > 0) {\n result = (result * 0x10000058B90CF1E6E) >> 64;\n }\n if (x & 0x40000000000 > 0) {\n result = (result * 0x1000002C5C863B73F) >> 64;\n }\n if (x & 0x20000000000 > 0) {\n result = (result * 0x100000162E430E5A2) >> 64;\n }\n if (x & 0x10000000000 > 0) {\n result = (result * 0x1000000B172183551) >> 64;\n }\n }\n\n if (x & 0xFF00000000 > 0) {\n if (x & 0x8000000000 > 0) {\n result = (result * 0x100000058B90C0B49) >> 64;\n }\n if (x & 0x4000000000 > 0) {\n result = (result * 0x10000002C5C8601CC) >> 64;\n }\n if (x & 0x2000000000 > 0) {\n result = (result * 0x1000000162E42FFF0) >> 64;\n }\n if (x & 0x1000000000 > 0) {\n result = (result * 0x10000000B17217FBB) >> 64;\n }\n if (x & 0x800000000 > 0) {\n result = (result * 0x1000000058B90BFCE) >> 64;\n }\n if (x & 0x400000000 > 0) {\n result = (result * 0x100000002C5C85FE3) >> 64;\n }\n if (x & 0x200000000 > 0) {\n result = (result * 0x10000000162E42FF1) >> 64;\n }\n if (x & 0x100000000 > 0) {\n result = (result * 0x100000000B17217F8) >> 64;\n }\n }\n\n if (x & 0xFF000000 > 0) {\n if (x & 0x80000000 > 0) {\n result = (result * 0x10000000058B90BFC) >> 64;\n }\n if (x & 0x40000000 > 0) {\n result = (result * 0x1000000002C5C85FE) >> 64;\n }\n if (x & 0x20000000 > 0) {\n result = (result * 0x100000000162E42FF) >> 64;\n }\n if (x & 0x10000000 > 0) {\n result = (result * 0x1000000000B17217F) >> 64;\n }\n if (x & 0x8000000 > 0) {\n result = (result * 0x100000000058B90C0) >> 64;\n }\n if (x & 0x4000000 > 0) {\n result = (result * 0x10000000002C5C860) >> 64;\n }\n if (x & 0x2000000 > 0) {\n result = (result * 0x1000000000162E430) >> 64;\n }\n if (x & 0x1000000 > 0) {\n result = (result * 0x10000000000B17218) >> 64;\n }\n }\n\n if (x & 0xFF0000 > 0) {\n if (x & 0x800000 > 0) {\n result = (result * 0x1000000000058B90C) >> 64;\n }\n if (x & 0x400000 > 0) {\n result = (result * 0x100000000002C5C86) >> 64;\n }\n if (x & 0x200000 > 0) {\n result = (result * 0x10000000000162E43) >> 64;\n }\n if (x & 0x100000 > 0) {\n result = (result * 0x100000000000B1721) >> 64;\n }\n if (x & 0x80000 > 0) {\n result = (result * 0x10000000000058B91) >> 64;\n }\n if (x & 0x40000 > 0) {\n result = (result * 0x1000000000002C5C8) >> 64;\n }\n if (x & 0x20000 > 0) {\n result = (result * 0x100000000000162E4) >> 64;\n }\n if (x & 0x10000 > 0) {\n result = (result * 0x1000000000000B172) >> 64;\n }\n }\n\n if (x & 0xFF00 > 0) {\n if (x & 0x8000 > 0) {\n result = (result * 0x100000000000058B9) >> 64;\n }\n if (x & 0x4000 > 0) {\n result = (result * 0x10000000000002C5D) >> 64;\n }\n if (x & 0x2000 > 0) {\n result = (result * 0x1000000000000162E) >> 64;\n }\n if (x & 0x1000 > 0) {\n result = (result * 0x10000000000000B17) >> 64;\n }\n if (x & 0x800 > 0) {\n result = (result * 0x1000000000000058C) >> 64;\n }\n if (x & 0x400 > 0) {\n result = (result * 0x100000000000002C6) >> 64;\n }\n if (x & 0x200 > 0) {\n result = (result * 0x10000000000000163) >> 64;\n }\n if (x & 0x100 > 0) {\n result = (result * 0x100000000000000B1) >> 64;\n }\n }\n\n if (x & 0xFF > 0) {\n if (x & 0x80 > 0) {\n result = (result * 0x10000000000000059) >> 64;\n }\n if (x & 0x40 > 0) {\n result = (result * 0x1000000000000002C) >> 64;\n }\n if (x & 0x20 > 0) {\n result = (result * 0x10000000000000016) >> 64;\n }\n if (x & 0x10 > 0) {\n result = (result * 0x1000000000000000B) >> 64;\n }\n if (x & 0x8 > 0) {\n result = (result * 0x10000000000000006) >> 64;\n }\n if (x & 0x4 > 0) {\n result = (result * 0x10000000000000003) >> 64;\n }\n if (x & 0x2 > 0) {\n result = (result * 0x10000000000000001) >> 64;\n }\n if (x & 0x1 > 0) {\n result = (result * 0x10000000000000001) >> 64;\n }\n }\n\n // In the code snippet below, two operations are executed simultaneously:\n //\n // 1. The result is multiplied by $(2^n + 1)$, where $2^n$ represents the integer part, and the additional 1\n // accounts for the initial guess of 0.5. This is achieved by subtracting from 191 instead of 192.\n // 2. The result is then converted to an unsigned 60.18-decimal fixed-point format.\n //\n // The underlying logic is based on the relationship $2^{191-ip} = 2^{ip} / 2^{191}$, where $ip$ denotes the,\n // integer part, $2^n$.\n result *= UNIT;\n result >>= (191 - (x >> 64));\n }\n}\n\n/// @notice Finds the zero-based index of the first 1 in the binary representation of x.\n///\n/// @dev See the note on \"msb\" in this Wikipedia article: https://en.wikipedia.org/wiki/Find_first_set\n///\n/// Each step in this implementation is equivalent to this high-level code:\n///\n/// ```solidity\n/// if (x >= 2 ** 128) {\n/// x >>= 128;\n/// result += 128;\n/// }\n/// ```\n///\n/// Where 128 is replaced with each respective power of two factor. See the full high-level implementation here:\n/// https://gist.github.com/PaulRBerg/f932f8693f2733e30c4d479e8e980948\n///\n/// The Yul instructions used below are:\n///\n/// - \"gt\" is \"greater than\"\n/// - \"or\" is the OR bitwise operator\n/// - \"shl\" is \"shift left\"\n/// - \"shr\" is \"shift right\"\n///\n/// @param x The uint256 number for which to find the index of the most significant bit.\n/// @return result The index of the most significant bit as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction msb(uint256 x) pure returns (uint256 result) {\n // 2^128\n assembly (\"memory-safe\") {\n let factor := shl(7, gt(x, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^64\n assembly (\"memory-safe\") {\n let factor := shl(6, gt(x, 0xFFFFFFFFFFFFFFFF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^32\n assembly (\"memory-safe\") {\n let factor := shl(5, gt(x, 0xFFFFFFFF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^16\n assembly (\"memory-safe\") {\n let factor := shl(4, gt(x, 0xFFFF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^8\n assembly (\"memory-safe\") {\n let factor := shl(3, gt(x, 0xFF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^4\n assembly (\"memory-safe\") {\n let factor := shl(2, gt(x, 0xF))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^2\n assembly (\"memory-safe\") {\n let factor := shl(1, gt(x, 0x3))\n x := shr(factor, x)\n result := or(result, factor)\n }\n // 2^1\n // No need to shift x any more.\n assembly (\"memory-safe\") {\n let factor := gt(x, 0x1)\n result := or(result, factor)\n }\n}\n\n/// @notice Calculates x*y÷denominator with 512-bit precision.\n///\n/// @dev Credits to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv.\n///\n/// Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - The denominator must not be zero.\n/// - The result must fit in uint256.\n///\n/// @param x The multiplicand as a uint256.\n/// @param y The multiplier as a uint256.\n/// @param denominator The divisor as a uint256.\n/// @return result The result as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDiv(uint256 x, uint256 y, uint256 denominator) pure returns (uint256 result) {\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 (\"memory-safe\") {\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 unchecked {\n return prod0 / denominator;\n }\n }\n\n // Make sure the result is less than 2^256. Also prevents denominator == 0.\n if (prod1 >= denominator) {\n revert PRBMath_MulDiv_Overflow(x, y, denominator);\n }\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 (\"memory-safe\") {\n // Compute remainder using the mulmod Yul instruction.\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 unchecked {\n // Calculate the largest power of two divisor of the denominator using the unary operator ~. This operation cannot overflow\n // because the denominator cannot be zero at this point in the function execution. The result is always >= 1.\n // For more detail, see https://cs.stackexchange.com/q/138556/92363.\n uint256 lpotdod = denominator & (~denominator + 1);\n uint256 flippedLpotdod;\n\n assembly (\"memory-safe\") {\n // Factor powers of two out of denominator.\n denominator := div(denominator, lpotdod)\n\n // Divide [prod1 prod0] by lpotdod.\n prod0 := div(prod0, lpotdod)\n\n // Get the flipped value `2^256 / lpotdod`. If the `lpotdod` is zero, the flipped value is one.\n // `sub(0, lpotdod)` produces the two's complement version of `lpotdod`, which is equivalent to flipping all the bits.\n // However, `div` interprets this value as an unsigned value: https://ethereum.stackexchange.com/q/147168/24693\n flippedLpotdod := add(div(sub(0, lpotdod), lpotdod), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * flippedLpotdod;\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 }\n}\n\n/// @notice Calculates x*y÷1e18 with 512-bit precision.\n///\n/// @dev A variant of {mulDiv} with constant folding, i.e. in which the denominator is hard coded to 1e18.\n///\n/// Notes:\n/// - The body is purposely left uncommented; to understand how this works, see the documentation in {mulDiv}.\n/// - The result is rounded toward zero.\n/// - We take as an axiom that the result cannot be `MAX_UINT256` when x and y solve the following system of equations:\n///\n/// $$\n/// \\begin{cases}\n/// x * y = MAX\\_UINT256 * UNIT \\\\\n/// (x * y) \\% UNIT \\geq \\frac{UNIT}{2}\n/// \\end{cases}\n/// $$\n///\n/// Requirements:\n/// - Refer to the requirements in {mulDiv}.\n/// - The result must fit in uint256.\n///\n/// @param x The multiplicand as an unsigned 60.18-decimal fixed-point number.\n/// @param y The multiplier as an unsigned 60.18-decimal fixed-point number.\n/// @return result The result as an unsigned 60.18-decimal fixed-point number.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDiv18(uint256 x, uint256 y) pure returns (uint256 result) {\n uint256 prod0;\n uint256 prod1;\n assembly (\"memory-safe\") {\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 if (prod1 == 0) {\n unchecked {\n return prod0 / UNIT;\n }\n }\n\n if (prod1 >= UNIT) {\n revert PRBMath_MulDiv18_Overflow(x, y);\n }\n\n uint256 remainder;\n assembly (\"memory-safe\") {\n remainder := mulmod(x, y, UNIT)\n result :=\n mul(\n or(\n div(sub(prod0, remainder), UNIT_LPOTD),\n mul(sub(prod1, gt(remainder, prod0)), add(div(sub(0, UNIT_LPOTD), UNIT_LPOTD), 1))\n ),\n UNIT_INVERSE\n )\n }\n}\n\n/// @notice Calculates x*y÷denominator with 512-bit precision.\n///\n/// @dev This is an extension of {mulDiv} for signed numbers, which works by computing the signs and the absolute values separately.\n///\n/// Notes:\n/// - The result is rounded toward zero.\n///\n/// Requirements:\n/// - Refer to the requirements in {mulDiv}.\n/// - None of the inputs can be `type(int256).min`.\n/// - The result must fit in int256.\n///\n/// @param x The multiplicand as an int256.\n/// @param y The multiplier as an int256.\n/// @param denominator The divisor as an int256.\n/// @return result The result as an int256.\n/// @custom:smtchecker abstract-function-nondet\nfunction mulDivSigned(int256 x, int256 y, int256 denominator) pure returns (int256 result) {\n if (x == type(int256).min || y == type(int256).min || denominator == type(int256).min) {\n revert PRBMath_MulDivSigned_InputTooSmall();\n }\n\n // Get hold of the absolute values of x, y and the denominator.\n uint256 xAbs;\n uint256 yAbs;\n uint256 dAbs;\n unchecked {\n xAbs = x < 0 ? uint256(-x) : uint256(x);\n yAbs = y < 0 ? uint256(-y) : uint256(y);\n dAbs = denominator < 0 ? uint256(-denominator) : uint256(denominator);\n }\n\n // Compute the absolute value of x*y÷denominator. The result must fit in int256.\n uint256 resultAbs = mulDiv(xAbs, yAbs, dAbs);\n if (resultAbs > uint256(type(int256).max)) {\n revert PRBMath_MulDivSigned_Overflow(x, y);\n }\n\n // Get the signs of x, y and the denominator.\n uint256 sx;\n uint256 sy;\n uint256 sd;\n assembly (\"memory-safe\") {\n // \"sgt\" is the \"signed greater than\" assembly instruction and \"sub(0,1)\" is -1 in two's complement.\n sx := sgt(x, sub(0, 1))\n sy := sgt(y, sub(0, 1))\n sd := sgt(denominator, sub(0, 1))\n }\n\n // XOR over sx, sy and sd. What this does is to check whether there are 1 or 3 negative signs in the inputs.\n // If there are, the result should be negative. Otherwise, it should be positive.\n unchecked {\n result = sx ^ sy ^ sd == 0 ? -int256(resultAbs) : int256(resultAbs);\n }\n}\n\n/// @notice Calculates the square root of x using the Babylonian method.\n///\n/// @dev See https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method.\n///\n/// Notes:\n/// - If x is not a perfect square, the result is rounded down.\n/// - Credits to OpenZeppelin for the explanations in comments below.\n///\n/// @param x The uint256 number for which to calculate the square root.\n/// @return result The result as a uint256.\n/// @custom:smtchecker abstract-function-nondet\nfunction sqrt(uint256 x) pure returns (uint256 result) {\n if (x == 0) {\n return 0;\n }\n\n // For our first guess, we calculate the biggest power of 2 which is smaller than the square root of x.\n //\n // We know that the \"msb\" (most significant bit) of x is a power of 2 such that we have:\n //\n // $$\n // msb(x) <= x <= 2*msb(x)$\n // $$\n //\n // We write $msb(x)$ as $2^k$, and we get:\n //\n // $$\n // k = log_2(x)\n // $$\n //\n // Thus, we can write the initial inequality as:\n //\n // $$\n // 2^{log_2(x)} <= x <= 2*2^{log_2(x)+1} \\\\\n // sqrt(2^k) <= sqrt(x) < sqrt(2^{k+1}) \\\\\n // 2^{k/2} <= sqrt(x) < 2^{(k+1)/2} <= 2^{(k/2)+1}\n // $$\n //\n // Consequently, $2^{log_2(x) /2} is a good first approximation of sqrt(x) with at least one correct bit.\n uint256 xAux = uint256(x);\n result = 1;\n if (xAux >= 2 ** 128) {\n xAux >>= 128;\n result <<= 64;\n }\n if (xAux >= 2 ** 64) {\n xAux >>= 64;\n result <<= 32;\n }\n if (xAux >= 2 ** 32) {\n xAux >>= 32;\n result <<= 16;\n }\n if (xAux >= 2 ** 16) {\n xAux >>= 16;\n result <<= 8;\n }\n if (xAux >= 2 ** 8) {\n xAux >>= 8;\n result <<= 4;\n }\n if (xAux >= 2 ** 4) {\n xAux >>= 4;\n result <<= 2;\n }\n if (xAux >= 2 ** 2) {\n result <<= 1;\n }\n\n // At this point, `result` is an estimation with at least one bit of precision. We know the true value has at\n // most 128 bits, since it is the square root of a uint256. Newton's method converges quadratically (precision\n // doubles at every iteration). We thus need at most 7 iteration to turn our partial result with one bit of\n // precision into the expected uint128 result.\n unchecked {\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n result = (result + x / result) >> 1;\n\n // If x is not a perfect square, round the result toward zero.\n uint256 roundedResult = x / result;\n if (result >= roundedResult) {\n result = roundedResult;\n }\n }\n}\n" + }, + "src/JBRulesets.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {JBControlled} from \"./abstract/JBControlled.sol\";\nimport {JBApprovalStatus} from \"./enums/JBApprovalStatus.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBRulesetApprovalHook} from \"./interfaces/IJBRulesetApprovalHook.sol\";\nimport {IJBRulesets} from \"./interfaces/IJBRulesets.sol\";\nimport {JBConstants} from \"./libraries/JBConstants.sol\";\nimport {JBRuleset} from \"./structs/JBRuleset.sol\";\nimport {JBRulesetWeightCache} from \"./structs/JBRulesetWeightCache.sol\";\n\n/// @notice Manages rulesets and queuing.\n/// @dev Rulesets dictate how a project behaves for a period of time. To learn more about their functionality, see the\n/// `JBRuleset` data structure.\n/// @dev Throughout this contract, `rulesetId` is an identifier for each ruleset. The `rulesetId` is the unix timestamp\n/// when the ruleset was initialized.\n/// @dev `approvable` means a ruleset which may or may not be approved.\ncontract JBRulesets is JBControlled, IJBRulesets {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBRulesets_InvalidWeightCutPercent(uint256 percent);\n error JBRulesets_InvalidRulesetApprovalHook(IJBRulesetApprovalHook hook);\n error JBRulesets_InvalidRulesetDuration(uint256 duration, uint256 limit);\n error JBRulesets_InvalidRulesetEndTime(uint256 timestamp, uint256 limit);\n error JBRulesets_InvalidWeight(uint256 weight, uint256 limit);\n\n //*********************************************************************//\n // ------------------------- internal constants ----------------------- //\n //*********************************************************************//\n\n /// @notice The number of weight cut percent multiples before a cached value is sought.\n uint256 internal constant _WEIGHT_CUT_MULTIPLE_CACHE_LOOKUP_THRESHOLD = 1000;\n\n /// @notice The maximum number of weight cut percent multiples that can be cached at a time.\n uint256 internal constant _MAX_WEIGHT_CUT_MULTIPLE_CACHE_THRESHOLD = 50_000;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been\n /// approved or not.\n /// @dev If a project has multiple rulesets queued, the `latestRulesetIdOf` will be the last one. This is the\n /// \"changeable\" cycle.\n /// @custom:param projectId The ID of the project to get the latest ruleset ID of.\n /// @return latestRulesetIdOf The `rulesetId` of the project's latest ruleset.\n mapping(uint256 projectId => uint256) public override latestRulesetIdOf;\n\n //*********************************************************************//\n // --------------------- internal stored properties ------------------- //\n //*********************************************************************//\n\n /// @notice The metadata for each ruleset, packed into one storage slot.\n /// @custom:param projectId The ID of the project to get metadata of.\n /// @custom:param rulesetId The ID of the ruleset to get metadata of.\n mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _metadataOf;\n\n /// @notice The mechanism-added properties to manage and schedule each ruleset, packed into one storage slot.\n /// @custom:param projectId The ID of the project to get the intrinsic properties of.\n /// @custom:param rulesetId The ID of the ruleset to get the intrinsic properties of.\n mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _packedIntrinsicPropertiesOf;\n\n /// @notice The user-defined properties of each ruleset, packed into one storage slot.\n /// @custom:param projectId The ID of the project to get the user-defined properties of.\n /// @custom:param rulesetId The ID of the ruleset to get the user-defined properties of.\n mapping(uint256 projectId => mapping(uint256 rulesetId => uint256)) internal _packedUserPropertiesOf;\n\n /// @notice Cached weight values to derive rulesets from.\n /// @custom:param projectId The ID of the project to which the cache applies.\n /// @custom:param rulesetId The ID of the ruleset to which the cache applies.\n mapping(uint256 projectId => mapping(uint256 rulesetId => JBRulesetWeightCache)) internal _weightCacheOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n // solhint-disable-next-line no-empty-blocks\n constructor(IJBDirectory directory) JBControlled(directory) {}\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\n /// @param projectId The ID of the project to get the rulesets of.\n /// @param startingId The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is\n /// passed, the project's latest ruleset will be used.\n /// @param size The maximum number of rulesets to return.\n /// @return rulesets The rulesets as an array of `JBRuleset` structs.\n function allOf(\n uint256 projectId,\n uint256 startingId,\n uint256 size\n )\n external\n view\n override\n returns (JBRuleset[] memory rulesets)\n {\n // If no starting ID was provided, set it to the latest ruleset's ID.\n if (startingId == 0) startingId = latestRulesetIdOf[projectId];\n\n // Keep a reference to the number of rulesets being returned.\n uint256 count = 0;\n\n // Keep a reference to the starting ruleset.\n JBRuleset memory ruleset = _getStructFor(projectId, startingId);\n\n // First, count the number of rulesets to include in the result by iterating backwards from the starting\n // ruleset.\n while (ruleset.id != 0 && count < size) {\n // Increment the counter.\n count++;\n\n // Iterate to the ruleset it was based on.\n ruleset = _getStructFor(projectId, ruleset.basedOnId);\n }\n\n // Keep a reference to the array of rulesets that'll be populated.\n rulesets = new JBRuleset[](count);\n\n // Return an empty array if there are no rulesets to return.\n if (count == 0) {\n return rulesets;\n }\n\n // Reset the ruleset being iterated on to the starting ruleset.\n ruleset = _getStructFor(projectId, startingId);\n\n // Set the counter.\n uint256 i;\n\n // Populate the array of rulesets to return.\n while (i < count) {\n // Add the ruleset to the array.\n rulesets[i++] = ruleset;\n\n // Get the ruleset it was based on if needed.\n if (i != count) ruleset = _getStructFor(projectId, ruleset.basedOnId);\n }\n }\n\n /// @notice The current approval status of a given project's latest ruleset.\n /// @param projectId The ID of the project to check the approval status of.\n /// @return The project's current approval status.\n function currentApprovalStatusForLatestRulesetOf(uint256 projectId)\n external\n view\n override\n returns (JBApprovalStatus)\n {\n // Get a reference to the latest ruleset ID.\n uint256 rulesetId = latestRulesetIdOf[projectId];\n\n // Resolve the struct for the latest ruleset.\n JBRuleset memory ruleset = _getStructFor(projectId, rulesetId);\n\n return _approvalStatusOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n start: ruleset.start,\n approvalHookRulesetId: ruleset.basedOnId\n });\n }\n\n /// @notice The ruleset that is currently active for the specified project.\n /// @dev If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\n /// @param projectId The ID of the project to get the current ruleset of.\n /// @return ruleset The project's current ruleset.\n function currentOf(uint256 projectId) external view override returns (JBRuleset memory ruleset) {\n // If the project does not have a ruleset, return an empty struct.\n // slither-disable-next-line incorrect-equality\n if (latestRulesetIdOf[projectId] == 0) return _getStructFor(0, 0);\n\n // Get a reference to the currently approvable ruleset's ID.\n uint256 rulesetId = _currentlyApprovableRulesetIdOf(projectId);\n\n // If a currently approvable ruleset exists...\n if (rulesetId != 0) {\n // Resolve the struct for the currently approvable ruleset.\n ruleset = _getStructFor(projectId, rulesetId);\n\n // Get a reference to the approval status.\n JBApprovalStatus approvalStatus = _approvalStatusOf(projectId, ruleset);\n\n // Check to see if this ruleset's approval hook is approved if it exists.\n // If so, return it.\n // slither-disable-next-line incorrect-equality\n if (approvalStatus == JBApprovalStatus.Approved || approvalStatus == JBApprovalStatus.Empty) {\n return ruleset;\n }\n\n // If it hasn't been approved, set the ruleset configuration to be the configuration of the ruleset that\n // it's based on,\n // which carries the last approved configuration.\n rulesetId = ruleset.basedOnId;\n\n // Keep a reference to its ruleset.\n ruleset = _getStructFor(projectId, rulesetId);\n } else {\n // No upcoming ruleset found that is currently approvable,\n // so use the latest ruleset ID.\n rulesetId = latestRulesetIdOf[projectId];\n\n // Get the struct for the latest ID.\n ruleset = _getStructFor(projectId, rulesetId);\n\n // Get a reference to the approval status.\n JBApprovalStatus approvalStatus = _approvalStatusOf(projectId, ruleset);\n\n // While the ruleset has a approval hook that isn't approved or if it hasn't yet started, get a reference to\n // the ruleset that the latest is based on, which has the latest approved configuration.\n while (\n (approvalStatus != JBApprovalStatus.Approved && approvalStatus != JBApprovalStatus.Empty)\n || block.timestamp < ruleset.start\n ) {\n rulesetId = ruleset.basedOnId;\n ruleset = _getStructFor(projectId, rulesetId);\n approvalStatus = _approvalStatusOf(projectId, ruleset);\n }\n }\n\n // If the base has no duration, it's still the current one.\n // slither-disable-next-line incorrect-equality\n if (ruleset.duration == 0) return ruleset;\n\n // Return a simulation of the current ruleset.\n return _simulateCycledRulesetBasedOn({projectId: projectId, baseRuleset: ruleset, allowMidRuleset: true});\n }\n\n /// @notice Get the ruleset struct for a given `rulesetId` and `projectId`.\n /// @param projectId The ID of the project to which the ruleset belongs.\n /// @param rulesetId The ID of the ruleset to get the struct of.\n /// @return ruleset The ruleset struct.\n function getRulesetOf(\n uint256 projectId,\n uint256 rulesetId\n )\n external\n view\n override\n returns (JBRuleset memory ruleset)\n {\n return _getStructFor(projectId, rulesetId);\n }\n\n /// @notice The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\n /// @dev Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset\n /// queue).\n /// @param projectId The ID of the project to get the latest queued ruleset of.\n /// @return ruleset The project's latest queued ruleset's struct.\n /// @return approvalStatus The approval hook's status for the ruleset.\n function latestQueuedOf(uint256 projectId)\n external\n view\n override\n returns (JBRuleset memory ruleset, JBApprovalStatus approvalStatus)\n {\n // Get a reference to the latest ruleset's ID.\n uint256 rulesetId = latestRulesetIdOf[projectId];\n\n // Resolve the struct for the latest ruleset.\n ruleset = _getStructFor(projectId, rulesetId);\n\n // Resolve the approval status.\n approvalStatus = _approvalStatusOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n start: ruleset.start,\n approvalHookRulesetId: ruleset.basedOnId\n });\n }\n\n /// @notice The ruleset that's up next for a project.\n /// @dev If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\n /// @param projectId The ID of the project to get the upcoming ruleset of.\n /// @return ruleset The struct for the project's upcoming ruleset.\n function upcomingOf(uint256 projectId) external view override returns (JBRuleset memory ruleset) {\n // If the project does not have a latest ruleset, return an empty struct.\n // slither-disable-next-line incorrect-equality\n if (latestRulesetIdOf[projectId] == 0) return _getStructFor(0, 0);\n\n // Get a reference to the upcoming approvable ruleset's ID.\n uint256 upcomingApprovableRulesetId = _upcomingApprovableRulesetIdOf(projectId);\n\n // Keep a reference to its approval status.\n JBApprovalStatus approvalStatus;\n\n // If an upcoming approvable ruleset has been queued, and it's approval status is Approved or ApprovalExpected,\n // return its ruleset struct\n if (upcomingApprovableRulesetId != 0) {\n ruleset = _getStructFor(projectId, upcomingApprovableRulesetId);\n\n // Get a reference to the approval status.\n approvalStatus = _approvalStatusOf(projectId, ruleset);\n\n // If the approval hook is empty, expects approval, or has approved the ruleset, return it.\n if (\n // slither-disable-next-line incorrect-equality\n approvalStatus == JBApprovalStatus.Approved || approvalStatus == JBApprovalStatus.ApprovalExpected\n || approvalStatus == JBApprovalStatus.Empty\n ) return ruleset;\n\n // Resolve the ruleset for the ruleset the upcoming approvable ruleset was based on.\n ruleset = _getStructFor(projectId, ruleset.basedOnId);\n } else {\n // Resolve the ruleset for the latest queued ruleset.\n ruleset = _getStructFor(projectId, latestRulesetIdOf[projectId]);\n\n // If the latest ruleset starts in the future, it must start in the distant future\n // Since its not the upcoming approvable ruleset. In this case, base the upcoming ruleset on the base\n // ruleset.\n while (ruleset.start > block.timestamp) {\n ruleset = _getStructFor(projectId, ruleset.basedOnId);\n }\n }\n\n // There's no queued if the current has a duration of 0.\n // slither-disable-next-line incorrect-equality\n if (ruleset.duration == 0) return _getStructFor(0, 0);\n\n // Get a reference to the approval status.\n approvalStatus = _approvalStatusOf(projectId, ruleset);\n\n // Check to see if this ruleset's approval hook hasn't failed.\n // If so, return a ruleset based on it.\n // slither-disable-next-line incorrect-equality\n if (approvalStatus == JBApprovalStatus.Approved || approvalStatus == JBApprovalStatus.Empty) {\n return _simulateCycledRulesetBasedOn({projectId: projectId, baseRuleset: ruleset, allowMidRuleset: false});\n }\n\n // Get the ruleset of its base ruleset, which carries the last approved configuration.\n ruleset = _getStructFor(projectId, ruleset.basedOnId);\n\n // There's no queued if the base, which must still be the current, has a duration of 0.\n // slither-disable-next-line incorrect-equality\n if (ruleset.duration == 0) return _getStructFor(0, 0);\n\n // Return a simulated cycled ruleset.\n return _simulateCycledRulesetBasedOn({projectId: projectId, baseRuleset: ruleset, allowMidRuleset: false});\n }\n\n //*********************************************************************//\n // --------------------------- public views -------------------------- //\n //*********************************************************************//\n\n /// @notice The cycle number of the next ruleset given the specified ruleset.\n /// @dev Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.\n /// @param baseRulesetCycleNumber The cycle number of the base ruleset.\n /// @param baseRulesetStart The start time of the base ruleset.\n /// @param baseRulesetDuration The duration of the base ruleset.\n /// @param start The start time of the ruleset to derive a cycle number for.\n /// @return The ruleset's cycle number.\n function deriveCycleNumberFrom(\n uint256 baseRulesetCycleNumber,\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 start\n )\n public\n pure\n returns (uint256)\n {\n // A subsequent ruleset to one with a duration of 0 should be the next number.\n // slither-disable-next-line incorrect-equality\n if (baseRulesetDuration == 0) {\n return baseRulesetCycleNumber + 1;\n }\n\n // The difference between the start of the base ruleset and the proposed start.\n uint256 startDistance = start - baseRulesetStart;\n\n // Find the number of base rulesets that fit in the start distance.\n return baseRulesetCycleNumber + (startDistance / baseRulesetDuration);\n }\n\n /// @notice The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.\n /// @param baseRulesetStart The start time of the base ruleset.\n /// @param baseRulesetDuration The duration of the base ruleset.\n /// @param mustStartAtOrAfter The earliest time the next ruleset can start. The ruleset cannot start before this\n /// timestamp.\n /// @return start The next start time.\n function deriveStartFrom(\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 mustStartAtOrAfter\n )\n public\n pure\n returns (uint256 start)\n {\n // A subsequent ruleset to one with a duration of 0 should start as soon as possible.\n // slither-disable-next-line incorrect-equality\n if (baseRulesetDuration == 0) return mustStartAtOrAfter;\n\n // The time when the ruleset immediately after the specified ruleset starts.\n uint256 nextImmediateStart = baseRulesetStart + baseRulesetDuration;\n\n // If the next immediate start is now or in the future, return it.\n if (nextImmediateStart >= mustStartAtOrAfter) {\n return nextImmediateStart;\n }\n\n // The amount of seconds since the `mustStartAtOrAfter` time which results in a start time that might satisfy\n // the specified limits.\n // slither-disable-next-line weak-prng\n uint256 timeFromImmediateStartMultiple = (mustStartAtOrAfter - nextImmediateStart) % baseRulesetDuration;\n\n // A reference to the first possible start timestamp.\n start = mustStartAtOrAfter - timeFromImmediateStartMultiple;\n\n // Add increments of duration as necessary to satisfy the threshold.\n while (mustStartAtOrAfter > start) {\n start += baseRulesetDuration;\n }\n }\n\n /// @notice The accumulated weight change since the specified ruleset.\n /// @param projectId The ID of the project to which the ruleset weights apply.\n /// @param baseRulesetStart The start time of the base ruleset.\n /// @param baseRulesetDuration The duration of the base ruleset.\n /// @param baseRulesetWeight The weight of the base ruleset.\n /// @param baseRulesetWeightCutPercent The weight cut percent of the base ruleset.\n /// @param baseRulesetCacheId The ID of the ruleset to base the calculation on (the previous ruleset).\n /// @param start The start time of the ruleset to derive a weight for.\n /// @return weight The derived weight, as a fixed point number with 18 decimals.\n function deriveWeightFrom(\n uint256 projectId,\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 baseRulesetWeight,\n uint256 baseRulesetWeightCutPercent,\n uint256 baseRulesetCacheId,\n uint256 start\n )\n public\n view\n returns (uint256 weight)\n {\n // A subsequent ruleset to one with a duration of 0 should have the next possible weight.\n // slither-disable-next-line incorrect-equality\n if (baseRulesetDuration == 0) {\n return mulDiv(\n baseRulesetWeight,\n JBConstants.MAX_WEIGHT_CUT_PERCENT - baseRulesetWeightCutPercent,\n JBConstants.MAX_WEIGHT_CUT_PERCENT\n );\n }\n\n // The weight should be based off the base ruleset's weight.\n weight = baseRulesetWeight;\n\n // If the weight cut percent is 0, the weight doesn't change.\n // slither-disable-next-line incorrect-equality\n if (baseRulesetWeightCutPercent == 0) return weight;\n\n // The difference between the start of the base ruleset and the proposed start.\n uint256 startDistance = start - baseRulesetStart;\n\n // Apply the base ruleset's weight cut percent for each ruleset that has passed.\n uint256 weightCutMultiple;\n unchecked {\n weightCutMultiple = startDistance / baseRulesetDuration; // Non-null duration is excluded above\n }\n\n // Check the cache if needed.\n if (baseRulesetCacheId > 0 && weightCutMultiple > _WEIGHT_CUT_MULTIPLE_CACHE_LOOKUP_THRESHOLD) {\n // Get a cached weight for the rulesetId.\n JBRulesetWeightCache memory cache = _weightCacheOf[projectId][baseRulesetCacheId];\n\n // If a cached value is available, use it.\n if (cache.weightCutMultiple > 0) {\n // Set the starting weight to be the cached value.\n weight = cache.weight;\n\n // Set the weight cut multiple to be the difference between the cached value and the total weight cut\n // multiple that should be applied.\n weightCutMultiple -= cache.weightCutMultiple;\n }\n }\n\n for (uint256 i; i < weightCutMultiple; i++) {\n // The number of times to apply the weight cut percent.\n // Base the new weight on the specified ruleset's weight.\n weight = mulDiv(\n weight,\n JBConstants.MAX_WEIGHT_CUT_PERCENT - baseRulesetWeightCutPercent,\n JBConstants.MAX_WEIGHT_CUT_PERCENT\n );\n\n // The calculation doesn't need to continue if the weight is 0.\n if (weight == 0) break;\n }\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice The approval status of a given project and ruleset struct according to the relevant approval hook.\n /// @param projectId The ID of the project that the ruleset belongs to.\n /// @param ruleset The ruleset to get an approval flag for.\n /// @return The approval status of the project's ruleset.\n function _approvalStatusOf(uint256 projectId, JBRuleset memory ruleset) internal view returns (JBApprovalStatus) {\n return _approvalStatusOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n start: ruleset.start,\n approvalHookRulesetId: ruleset.basedOnId\n });\n }\n\n /// @notice The approval status of a given ruleset (ID) for a given project (ID).\n /// @param projectId The ID of the project the ruleset belongs to.\n /// @param rulesetId The ID of the ruleset to get the approval status of.\n /// @param start The start time of the ruleset to get the approval status of.\n /// @param approvalHookRulesetId The ID of the ruleset with the approval hook that should be checked against.\n /// @return The approval status of the project.\n function _approvalStatusOf(\n uint256 projectId,\n uint256 rulesetId,\n uint256 start,\n uint256 approvalHookRulesetId\n )\n internal\n view\n returns (JBApprovalStatus)\n {\n // If there is no ruleset ID to check the approval hook of, the approval hook is empty.\n // slither-disable-next-line incorrect-equality\n if (approvalHookRulesetId == 0) return JBApprovalStatus.Empty;\n\n // Get the struct of the ruleset with the approval hook.\n JBRuleset memory approvalHookRuleset = _getStructFor(projectId, approvalHookRulesetId);\n\n // If there is no approval hook, it's considered empty.\n if (approvalHookRuleset.approvalHook == IJBRulesetApprovalHook(address(0))) {\n return JBApprovalStatus.Empty;\n }\n\n // Return the approval hook's approval status.\n // slither-disable-next-line calls-loop\n return approvalHookRuleset.approvalHook.approvalStatusOf(projectId, rulesetId, start);\n }\n\n /// @notice The ID of the ruleset which has started and hasn't expired yet, whether or not it has been approved, for\n /// a given project. If approved, this is the active ruleset.\n /// @dev A value of 0 is returned if no ruleset was found.\n /// @dev Assumes the project has a latest ruleset.\n /// @param projectId The ID of the project to check for a currently approvable ruleset.\n /// @return The ID of a currently approvable ruleset if one exists, or 0 if one doesn't exist.\n function _currentlyApprovableRulesetIdOf(uint256 projectId) internal view returns (uint256) {\n // Get a reference to the project's latest ruleset.\n uint256 rulesetId = latestRulesetIdOf[projectId];\n\n // Get the struct for the latest ruleset.\n JBRuleset memory ruleset = _getStructFor(projectId, rulesetId);\n\n // Loop through all most recently queued rulesets until an approvable one is found, or we've proven one can't\n // exist.\n do {\n // If the latest ruleset is expired, return an empty ruleset.\n // A ruleset with a duration of 0 cannot expire.\n if (ruleset.duration != 0 && block.timestamp >= ruleset.start + ruleset.duration) {\n return 0;\n }\n\n // Return the ruleset's `rulesetId` if it has started.\n if (block.timestamp >= ruleset.start) {\n return ruleset.id;\n }\n\n ruleset = _getStructFor(projectId, ruleset.basedOnId);\n } while (ruleset.cycleNumber != 0);\n\n return 0;\n }\n\n /// @notice Unpack a ruleset's packed stored values into an easy-to-work-with ruleset struct.\n /// @param projectId The ID of the project the ruleset belongs to.\n /// @param rulesetId The ID of the ruleset to get the full struct for.\n /// @return ruleset A ruleset struct.\n function _getStructFor(uint256 projectId, uint256 rulesetId) internal view returns (JBRuleset memory ruleset) {\n // Return an empty ruleset if the specified `rulesetId` is 0.\n // slither-disable-next-line incorrect-equality\n if (rulesetId == 0) return ruleset;\n\n ruleset.id = uint48(rulesetId);\n\n uint256 packedIntrinsicProperties = _packedIntrinsicPropertiesOf[projectId][rulesetId];\n\n // `weight` in bits 0-111 bits.\n ruleset.weight = uint112(packedIntrinsicProperties);\n // `basedOnId` in bits 112-159 bits.\n ruleset.basedOnId = uint48(packedIntrinsicProperties >> 112);\n // `start` in bits 160-207 bits.\n ruleset.start = uint48(packedIntrinsicProperties >> 160);\n // `cycleNumber` in bits 208-255 bits.\n ruleset.cycleNumber = uint48(packedIntrinsicProperties >> 208);\n\n uint256 packedUserProperties = _packedUserPropertiesOf[projectId][rulesetId];\n\n // approval hook in bits 0-159 bits.\n ruleset.approvalHook = IJBRulesetApprovalHook(address(uint160(packedUserProperties)));\n // `duration` in bits 160-191 bits.\n ruleset.duration = uint32(packedUserProperties >> 160);\n // weight cut percent in bits 192-223 bits.\n ruleset.weightCutPercent = uint32(packedUserProperties >> 192);\n\n ruleset.metadata = _metadataOf[projectId][rulesetId];\n }\n\n /// @notice A simulated view of the ruleset that would be created if the provided one cycled over (if the project\n /// doesn't queue a new ruleset).\n /// @dev Returns an empty ruleset if a ruleset can't be simulated based on the provided one.\n /// @dev Assumes a simulated ruleset will never be based on a ruleset with a duration of 0.\n /// @param projectId The ID of the project of the ruleset.\n /// @param baseRuleset The ruleset that the simulated ruleset should be based on.\n /// @param allowMidRuleset A flag indicating if the simulated ruleset is allowed to already be mid ruleset.\n /// @return A simulated ruleset struct: the next ruleset by default. This will be overwritten if a new ruleset is\n /// queued for the project.\n function _simulateCycledRulesetBasedOn(\n uint256 projectId,\n JBRuleset memory baseRuleset,\n bool allowMidRuleset\n )\n internal\n view\n returns (JBRuleset memory)\n {\n // Get the distance from the current time to the start of the next possible ruleset.\n // If the simulated ruleset must not yet have started, the start time of the simulated ruleset must be in the\n // future.\n uint256 mustStartAtOrAfter = !allowMidRuleset ? block.timestamp + 1 : block.timestamp - baseRuleset.duration + 1;\n\n // Calculate what the start time should be.\n uint256 start = deriveStartFrom({\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n mustStartAtOrAfter: mustStartAtOrAfter\n });\n\n // Calculate what the cycle number should be.\n uint256 rulesetCycleNumber = deriveCycleNumberFrom({\n baseRulesetCycleNumber: baseRuleset.cycleNumber,\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n start: start\n });\n\n return JBRuleset({\n cycleNumber: uint48(rulesetCycleNumber),\n id: baseRuleset.id,\n basedOnId: baseRuleset.basedOnId,\n start: uint48(start),\n duration: baseRuleset.duration,\n weight: uint112(\n deriveWeightFrom({\n projectId: projectId,\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n baseRulesetWeight: baseRuleset.weight,\n baseRulesetWeightCutPercent: baseRuleset.weightCutPercent,\n baseRulesetCacheId: baseRuleset.id,\n start: start\n })\n ),\n weightCutPercent: baseRuleset.weightCutPercent,\n approvalHook: baseRuleset.approvalHook,\n metadata: baseRuleset.metadata\n });\n }\n\n /// @notice The ruleset up next for a project, if one exists, whether or not that ruleset has been approved.\n /// @dev A value of 0 is returned if no ruleset was found.\n /// @dev Assumes the project has a `latestRulesetIdOf` value.\n /// @param projectId The ID of the project to check for an upcoming approvable ruleset.\n /// @return rulesetId The `rulesetId` of the upcoming approvable ruleset if one exists, or 0 if one doesn't exist.\n function _upcomingApprovableRulesetIdOf(uint256 projectId) internal view returns (uint256 rulesetId) {\n // Get a reference to the ID of the project's latest ruleset.\n rulesetId = latestRulesetIdOf[projectId];\n\n // Get the struct for the latest ruleset.\n JBRuleset memory ruleset = _getStructFor(projectId, rulesetId);\n\n // There is no upcoming ruleset if the latest ruleset has already started.\n // slither-disable-next-line incorrect-equality\n if (block.timestamp >= ruleset.start) return 0;\n\n // If this is the first ruleset, it is queued.\n // slither-disable-next-line incorrect-equality\n if (ruleset.cycleNumber == 1) return rulesetId;\n\n // Get a reference to the ID of the ruleset the latest ruleset was based on.\n uint256 basedOnId = ruleset.basedOnId;\n\n // Get the necessary properties for the base ruleset.\n JBRuleset memory baseRuleset;\n\n // Find the base ruleset that is not still queued.\n while (true) {\n baseRuleset = _getStructFor(projectId, basedOnId);\n\n // If the base ruleset starts in the future,\n if (block.timestamp < baseRuleset.start) {\n // Set the `rulesetId` to the one found.\n rulesetId = baseRuleset.id;\n // Check the ruleset it was based on in the next iteration.\n basedOnId = baseRuleset.basedOnId;\n } else {\n // Break out of the loop when a base ruleset which has already started is found.\n break;\n }\n }\n\n // Get the ruleset struct for the ID found.\n ruleset = _getStructFor(projectId, rulesetId);\n\n // If the latest ruleset doesn't start until after another base ruleset return 0.\n if (baseRuleset.duration != 0 && block.timestamp < ruleset.start - baseRuleset.duration) {\n return 0;\n }\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Queues the upcoming approvable ruleset for the specified project.\n /// @dev Only a project's current controller can queue its rulesets.\n /// @param projectId The ID of the project to queue the ruleset for.\n /// @param duration The number of seconds the ruleset lasts for, after which a new ruleset starts.\n /// - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new\n /// ruleset will start immediately.\n /// - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be\n /// *queued* to take effect afterwards.\n /// - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules\n /// (except for a new `start` timestamp and a cut `weight`).\n /// @param weight A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on.\n /// Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\n /// @param weightCutPercent A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's\n /// `weight`\n /// by.\n /// - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply.\n /// - If the `weightCutPercent` is 0, the `weight` stays the same.\n /// - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90%\n /// of the\n /// current\n /// one.\n /// @param approvalHook A contract which dictates whether a proposed ruleset should be accepted or rejected. It can\n /// be used to constrain a project owner's ability to change ruleset parameters over time.\n /// @param metadata Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\n /// @param mustStartAtOrAfter The earliest time the ruleset can start. The ruleset cannot start before this\n /// timestamp.\n /// @return The struct of the new ruleset.\n function queueFor(\n uint256 projectId,\n uint256 duration,\n uint256 weight,\n uint256 weightCutPercent,\n IJBRulesetApprovalHook approvalHook,\n uint256 metadata,\n uint256 mustStartAtOrAfter\n )\n external\n override\n onlyControllerOf(projectId)\n returns (JBRuleset memory)\n {\n // Duration must fit in a uint32.\n if (duration > type(uint32).max) revert JBRulesets_InvalidRulesetDuration(duration, type(uint32).max);\n\n // Weight cut percent must be less than or equal to 100%.\n if (weightCutPercent > JBConstants.MAX_WEIGHT_CUT_PERCENT) {\n revert JBRulesets_InvalidWeightCutPercent(weightCutPercent);\n }\n\n // Weight must fit into a uint112.\n if (weight > type(uint112).max) revert JBRulesets_InvalidWeight(weight, type(uint112).max);\n\n // If the start date is not set, set it to be the current timestamp.\n if (mustStartAtOrAfter == 0) {\n mustStartAtOrAfter = block.timestamp;\n }\n\n // Make sure the min start date fits in a uint48, and that the start date of the following ruleset will also fit\n // within the max.\n if (mustStartAtOrAfter + duration > type(uint48).max) {\n revert JBRulesets_InvalidRulesetEndTime(mustStartAtOrAfter + duration, type(uint48).max);\n }\n\n // Approval hook should be a valid contract, supporting the correct interface\n if (approvalHook != IJBRulesetApprovalHook(address(0))) {\n // Revert if there isn't a contract at the address\n if (address(approvalHook).code.length == 0) revert JBRulesets_InvalidRulesetApprovalHook(approvalHook);\n\n // Make sure the approval hook supports the expected interface.\n try approvalHook.supportsInterface(type(IJBRulesetApprovalHook).interfaceId) returns (bool doesSupport) {\n if (!doesSupport) revert JBRulesets_InvalidRulesetApprovalHook(approvalHook); // Contract exists at the\n // address but\n // with the\n // wrong interface\n } catch {\n revert JBRulesets_InvalidRulesetApprovalHook(approvalHook); // No ERC165 support\n }\n }\n\n // Get a reference to the latest ruleset's ID.\n uint256 latestId = latestRulesetIdOf[projectId];\n\n // The new rulesetId timestamp is now, or an increment from now if the current timestamp is taken.\n uint256 rulesetId = latestId >= block.timestamp ? latestId + 1 : block.timestamp;\n\n // Set up the ruleset by configuring intrinsic properties.\n _configureIntrinsicPropertiesFor(projectId, rulesetId, weight, mustStartAtOrAfter);\n\n // Efficiently stores the ruleset's user-defined properties.\n // If all user config properties are zero, no need to store anything as the default value will have the same\n // outcome.\n if (approvalHook != IJBRulesetApprovalHook(address(0)) || duration > 0 || weightCutPercent > 0) {\n // approval hook in bits 0-159 bytes.\n uint256 packed = uint160(address(approvalHook));\n\n // duration in bits 160-191 bytes.\n packed |= duration << 160;\n\n // weightCutPercent in bits 192-223 bytes.\n packed |= weightCutPercent << 192;\n\n // Set in storage.\n _packedUserPropertiesOf[projectId][rulesetId] = packed;\n }\n\n // Set the metadata if needed.\n if (metadata > 0) _metadataOf[projectId][rulesetId] = metadata;\n\n emit RulesetQueued({\n rulesetId: rulesetId,\n projectId: projectId,\n duration: duration,\n weight: weight,\n weightCutPercent: weightCutPercent,\n approvalHook: approvalHook,\n metadata: metadata,\n mustStartAtOrAfter: mustStartAtOrAfter,\n caller: msg.sender\n });\n\n // Return the struct for the new ruleset's ID.\n return _getStructFor(projectId, rulesetId);\n }\n\n /// @notice Cache the value of the ruleset weight.\n /// @param projectId The ID of the project having its ruleset weight cached.\n function updateRulesetWeightCache(uint256 projectId) external override {\n // Keep a reference to the struct for the latest queued ruleset.\n // The cached value will be based on this struct.\n JBRuleset memory latestQueuedRuleset = _getStructFor(projectId, latestRulesetIdOf[projectId]);\n\n // Nothing to cache if the latest ruleset doesn't have a duration or a weight cut percent.\n // slither-disable-next-line incorrect-equality\n if (latestQueuedRuleset.duration == 0 || latestQueuedRuleset.weightCutPercent == 0) return;\n\n // Get a reference to the current cache.\n JBRulesetWeightCache storage cache = _weightCacheOf[projectId][latestQueuedRuleset.id];\n\n // Determine the largest start timestamp the cache can be filled to.\n uint256 maxStart = latestQueuedRuleset.start\n + (cache.weightCutMultiple + _MAX_WEIGHT_CUT_MULTIPLE_CACHE_THRESHOLD) * latestQueuedRuleset.duration;\n\n // Determine the start timestamp to derive a weight from for the cache.\n uint256 start = block.timestamp < maxStart ? block.timestamp : maxStart;\n\n // The difference between the start of the latest queued ruleset and the start of the ruleset we're caching the\n // weight of.\n uint256 startDistance = start - latestQueuedRuleset.start;\n\n // Calculate the weight cut multiple.\n uint168 weightCutMultiple;\n unchecked {\n weightCutMultiple = uint168(startDistance / latestQueuedRuleset.duration);\n }\n\n // Store the new values.\n cache.weight = uint112(\n deriveWeightFrom({\n projectId: projectId,\n baseRulesetStart: latestQueuedRuleset.start,\n baseRulesetDuration: latestQueuedRuleset.duration,\n baseRulesetWeight: latestQueuedRuleset.weight,\n baseRulesetWeightCutPercent: latestQueuedRuleset.weightCutPercent,\n baseRulesetCacheId: latestQueuedRuleset.id,\n start: start\n })\n );\n cache.weightCutMultiple = weightCutMultiple;\n\n emit WeightCacheUpdated({\n projectId: projectId,\n weight: cache.weight,\n weightCutMultiple: weightCutMultiple,\n caller: msg.sender\n });\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice Updates the latest ruleset for this project if it exists. If there is no ruleset, initializes one.\n /// @param projectId The ID of the project to update the latest ruleset for.\n /// @param rulesetId The timestamp of when the ruleset was queued.\n /// @param weight The weight to store in the queued ruleset.\n /// @param mustStartAtOrAfter The earliest time the ruleset can start. The ruleset cannot start before this\n /// timestamp.\n function _configureIntrinsicPropertiesFor(\n uint256 projectId,\n uint256 rulesetId,\n uint256 weight,\n uint256 mustStartAtOrAfter\n )\n internal\n {\n // Keep a reference to the project's latest ruleset's ID.\n uint256 latestId = latestRulesetIdOf[projectId];\n\n // If the project doesn't have a ruleset yet, initialize one.\n // slither-disable-next-line incorrect-equality\n if (latestId == 0) {\n // Use an empty ruleset as the base.\n return _initializeRulesetFor({\n projectId: projectId,\n baseRuleset: _getStructFor(0, 0),\n rulesetId: rulesetId,\n mustStartAtOrAfter: mustStartAtOrAfter,\n weight: weight\n });\n }\n\n // Get a reference to the latest ruleset's struct.\n JBRuleset memory baseRuleset = _getStructFor(projectId, latestId);\n\n // Get a reference to the approval status.\n JBApprovalStatus approvalStatus = _approvalStatusOf(projectId, baseRuleset);\n\n // If the base ruleset has started but wasn't approved if a approval hook exists\n // OR it hasn't started but is currently approved\n // OR it hasn't started but it is likely to be approved and takes place before the proposed one,\n // set the struct to be the ruleset it's based on, which carries the latest approved ruleset.\n if (\n (\n block.timestamp >= baseRuleset.start && approvalStatus != JBApprovalStatus.Approved\n && approvalStatus != JBApprovalStatus.Empty\n )\n || (\n block.timestamp < baseRuleset.start && mustStartAtOrAfter < baseRuleset.start + baseRuleset.duration\n && approvalStatus != JBApprovalStatus.Approved\n )\n || (\n block.timestamp < baseRuleset.start && mustStartAtOrAfter >= baseRuleset.start + baseRuleset.duration\n && approvalStatus != JBApprovalStatus.Approved && approvalStatus != JBApprovalStatus.ApprovalExpected\n && approvalStatus != JBApprovalStatus.Empty\n )\n ) {\n baseRuleset = _getStructFor(projectId, baseRuleset.basedOnId);\n }\n\n // The time when the duration of the base ruleset's approval hook has finished.\n // If the provided ruleset has no approval hook, return 0 (no constraint on start time).\n uint256 timestampAfterApprovalHook = baseRuleset.approvalHook == IJBRulesetApprovalHook(address(0))\n ? 0\n : rulesetId + baseRuleset.approvalHook.DURATION();\n\n _initializeRulesetFor({\n projectId: projectId,\n baseRuleset: baseRuleset,\n rulesetId: rulesetId,\n // Can only start after the approval hook.\n mustStartAtOrAfter: timestampAfterApprovalHook > mustStartAtOrAfter\n ? timestampAfterApprovalHook\n : mustStartAtOrAfter,\n weight: weight\n });\n }\n\n /// @notice Initializes a ruleset with the specified properties.\n /// @param projectId The ID of the project to initialize the ruleset for.\n /// @param baseRuleset The ruleset struct to base the newly initialized one on.\n /// @param rulesetId The `rulesetId` for the ruleset being initialized.\n /// @param mustStartAtOrAfter The earliest time the ruleset can start. The ruleset cannot start before this\n /// timestamp.\n /// @param weight The weight to give the newly initialized ruleset.\n function _initializeRulesetFor(\n uint256 projectId,\n JBRuleset memory baseRuleset,\n uint256 rulesetId,\n uint256 mustStartAtOrAfter,\n uint256 weight\n )\n internal\n {\n // If there is no base, initialize a first ruleset.\n // slither-disable-next-line incorrect-equality\n if (baseRuleset.cycleNumber == 0) {\n // Set fresh intrinsic properties.\n _packAndStoreIntrinsicPropertiesOf({\n rulesetId: rulesetId,\n projectId: projectId,\n rulesetCycleNumber: 1,\n weight: weight,\n basedOnId: baseRuleset.id,\n start: mustStartAtOrAfter\n });\n } else {\n // Derive the correct next start time from the base.\n uint256 start = deriveStartFrom({\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n mustStartAtOrAfter: mustStartAtOrAfter\n });\n\n // A weight of 1 is treated as a weight of 0.\n // This is to allow a weight of 0 (default) to represent inheriting the cut weight of the previous\n // ruleset.\n weight = weight > 0\n ? (weight == 1 ? 0 : weight)\n : deriveWeightFrom({\n projectId: projectId,\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n baseRulesetWeight: baseRuleset.weight,\n baseRulesetWeightCutPercent: baseRuleset.weightCutPercent,\n baseRulesetCacheId: baseRuleset.id,\n start: start\n });\n\n // Derive the correct ruleset cycle number.\n uint256 rulesetCycleNumber = deriveCycleNumberFrom({\n baseRulesetCycleNumber: baseRuleset.cycleNumber,\n baseRulesetStart: baseRuleset.start,\n baseRulesetDuration: baseRuleset.duration,\n start: start\n });\n\n // Update the intrinsic properties.\n _packAndStoreIntrinsicPropertiesOf({\n rulesetId: rulesetId,\n projectId: projectId,\n rulesetCycleNumber: rulesetCycleNumber,\n weight: weight,\n basedOnId: baseRuleset.id,\n start: start\n });\n }\n\n // Set the project's latest ruleset configuration.\n latestRulesetIdOf[projectId] = rulesetId;\n\n emit RulesetInitialized({\n rulesetId: rulesetId,\n projectId: projectId,\n basedOnId: baseRuleset.id,\n caller: msg.sender\n });\n }\n\n /// @notice Efficiently stores the provided intrinsic properties of a ruleset.\n /// @param rulesetId The `rulesetId` of the ruleset to pack and store for.\n /// @param projectId The ID of the project the ruleset belongs to.\n /// @param rulesetCycleNumber The cycle number of the ruleset.\n /// @param weight The weight of the ruleset.\n /// @param basedOnId The `rulesetId` of the ruleset this ruleset was based on.\n /// @param start The start time of this ruleset.\n function _packAndStoreIntrinsicPropertiesOf(\n uint256 rulesetId,\n uint256 projectId,\n uint256 rulesetCycleNumber,\n uint256 weight,\n uint256 basedOnId,\n uint256 start\n )\n internal\n {\n // `weight` in bits 0-111.\n uint256 packed = weight;\n\n // `basedOnId` in bits 112-159.\n packed |= basedOnId << 112;\n\n // `start` in bits 160-207.\n packed |= start << 160;\n\n // cycle number in bits 208-255.\n packed |= rulesetCycleNumber << 208;\n\n // Store the packed value.\n _packedIntrinsicPropertiesOf[projectId][rulesetId] = packed;\n }\n}\n" + }, + "src/enums/JBApprovalStatus.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @notice A ruleset's approval status in a ruleset approval hook.\nenum JBApprovalStatus {\n Empty,\n Upcoming,\n Active,\n ApprovalExpected,\n Approved,\n Failed\n}\n" + }, + "src/interfaces/IJBRulesetApprovalHook.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBApprovalStatus} from \"./../enums/JBApprovalStatus.sol\";\n\n/// @notice `IJBRulesetApprovalHook`s are used to determine whether the next ruleset in the ruleset queue is approved or\n/// rejected.\n/// @dev Project rulesets are stored in a queue. Rulesets take effect after the previous ruleset in the queue ends, and\n/// only if they are approved by the previous ruleset's approval hook.\ninterface IJBRulesetApprovalHook is IERC165 {\n function DURATION() external view returns (uint256);\n\n function approvalStatusOf(\n uint256 projectId,\n uint256 rulesetId,\n uint256 start\n )\n external\n view\n returns (JBApprovalStatus);\n}\n" + }, + "src/interfaces/IJBRulesets.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBApprovalStatus} from \"./../enums/JBApprovalStatus.sol\";\nimport {JBRuleset} from \"./../structs/JBRuleset.sol\";\nimport {IJBRulesetApprovalHook} from \"./IJBRulesetApprovalHook.sol\";\n\ninterface IJBRulesets {\n event RulesetInitialized(\n uint256 indexed rulesetId, uint256 indexed projectId, uint256 indexed basedOnId, address caller\n );\n event RulesetQueued(\n uint256 indexed rulesetId,\n uint256 indexed projectId,\n uint256 duration,\n uint256 weight,\n uint256 weightCutPercent,\n IJBRulesetApprovalHook approvalHook,\n uint256 metadata,\n uint256 mustStartAtOrAfter,\n address caller\n );\n\n event WeightCacheUpdated(uint256 projectId, uint112 weight, uint256 weightCutMultiple, address caller);\n\n function latestRulesetIdOf(uint256 projectId) external view returns (uint256);\n\n function currentApprovalStatusForLatestRulesetOf(uint256 projectId) external view returns (JBApprovalStatus);\n function currentOf(uint256 projectId) external view returns (JBRuleset memory ruleset);\n function deriveCycleNumberFrom(\n uint256 baseRulesetCycleNumber,\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 start\n )\n external\n returns (uint256);\n function deriveStartFrom(\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 mustStartAtOrAfter\n )\n external\n view\n returns (uint256 start);\n function deriveWeightFrom(\n uint256 projectId,\n uint256 baseRulesetStart,\n uint256 baseRulesetDuration,\n uint256 baseRulesetWeight,\n uint256 baseRulesetWeightCutPercent,\n uint256 baseRulesetCacheId,\n uint256 start\n )\n external\n view\n returns (uint256 weight);\n function getRulesetOf(uint256 projectId, uint256 rulesetId) external view returns (JBRuleset memory);\n function latestQueuedOf(uint256 projectId)\n external\n view\n returns (JBRuleset memory ruleset, JBApprovalStatus approvalStatus);\n function allOf(\n uint256 projectId,\n uint256 startingId,\n uint256 size\n )\n external\n view\n returns (JBRuleset[] memory rulesets);\n function upcomingOf(uint256 projectId) external view returns (JBRuleset memory ruleset);\n\n function queueFor(\n uint256 projectId,\n uint256 duration,\n uint256 weight,\n uint256 weightCutPercent,\n IJBRulesetApprovalHook approvalHook,\n uint256 metadata,\n uint256 mustStartAtOrAfter\n )\n external\n returns (JBRuleset memory ruleset);\n function updateRulesetWeightCache(uint256 projectId) external;\n}\n" + }, + "src/structs/JBRuleset.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBRulesetApprovalHook} from \"./../interfaces/IJBRulesetApprovalHook.sol\";\n\n/// @dev `JBRuleset` timestamps are unix timestamps (seconds since 00:00 January 1st, 1970 UTC).\n/// @custom:member cycleNumber The ruleset's cycle number. Each ruleset's `cycleNumber` is the previous ruleset's\n/// `cycleNumber` plus one. Each project's first ruleset has a `cycleNumber` of 1.\n/// @custom:member id The ruleset's ID, which is a timestamp of when this ruleset's rules were initialized. The\n/// `rulesetId` stays the same for rulesets that automatically cycle over from a manually queued ruleset.\n/// @custom:member basedOnId The `rulesetId` of the ruleset which was active when this ruleset was created.\n/// @custom:member start The timestamp from which this ruleset is considered active.\n/// @custom:member duration The number of seconds the ruleset lasts for. After this duration, a new ruleset will start.\n/// The project owner can queue new rulesets at any time, which will take effect once the current ruleset's duration is\n/// over. If the `duration` is 0, newly queued rulesets will take effect immediately. If a ruleset ends and there are no\n/// new rulesets queued, the current ruleset cycles over to another one with the same properties but a new `start`\n/// timestamp and a `weight` reduced by the ruleset's `weightCutPercent`.\n/// @custom:member weight A fixed point number with 18 decimals which is typically used by payment terminals to\n/// determine how many tokens should be minted when a payment is received. This can be used by other contracts for\n/// arbitrary calculations.\n/// @custom:member weightCutPercent The percentage by which to reduce the `weight` each time a new ruleset starts.\n/// `weight`\n/// is\n/// a percentage out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`. If it's 0, the next ruleset will have the same `weight` by\n/// default. If it's 90%, the next ruleset's `weight` will be 10% smaller. If a ruleset explicitly sets a new `weight`,\n/// the `weightCutPercent` doesn't apply.\n/// @custom:member approvalHook An address of a contract that says whether a queued ruleset should be approved or\n/// rejected. If a\n/// ruleset is rejected, it won't go into effect. An approval hook can be used to create rules which dictate how a\n/// project owner can change their ruleset over time.\n/// @custom:member metadata Extra data associated with a ruleset which can be used by other contracts.\nstruct JBRuleset {\n uint48 cycleNumber;\n uint48 id;\n uint48 basedOnId;\n uint48 start;\n uint32 duration;\n uint112 weight;\n uint32 weightCutPercent;\n IJBRulesetApprovalHook approvalHook;\n uint256 metadata;\n}\n" + }, + "src/structs/JBRulesetWeightCache.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member weight The cached weight value.\n/// @custom:member weightCutMultiple The weight cut multiple that produces the given weight.\nstruct JBRulesetWeightCache {\n uint112 weight;\n uint168 weightCutMultiple;\n}\n" + }, + "src/JBPrices.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {JBControlled} from \"./abstract/JBControlled.sol\";\nimport {JBPermissioned} from \"./abstract/JBPermissioned.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBPermissions} from \"./interfaces/IJBPermissions.sol\";\nimport {IJBPriceFeed} from \"./interfaces/IJBPriceFeed.sol\";\nimport {IJBPrices} from \"./interfaces/IJBPrices.sol\";\nimport {IJBProjects} from \"./interfaces/IJBProjects.sol\";\n\n/// @notice Manages and normalizes price feeds. Price feeds are contracts which return the \"pricing currency\" cost of 1\n/// \"unit currency\".\ncontract JBPrices is JBControlled, JBPermissioned, Ownable, IJBPrices {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBPrices_PriceFeedAlreadyExists(IJBPriceFeed feed);\n error JBPrices_PriceFeedNotFound();\n error JBPrices_ZeroPricingCurrency();\n error JBPrices_ZeroUnitCurrency();\n\n //*********************************************************************//\n // ------------------------- public constants ------------------------ //\n //*********************************************************************//\n\n /// @notice The ID to store default values in.\n uint256 public constant override DEFAULT_PROJECT_ID = 0;\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice Mints ERC-721s that represent project ownership and transfers.\n IJBProjects public immutable override PROJECTS;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice The available price feeds.\n /// @dev The feed returns the `pricingCurrency` cost for one unit of the `unitCurrency`.\n /// @custom:param projectId The ID of the project the feed applies to. Feeds stored in ID 0 are used by default for\n /// all projects.\n /// @custom:param pricingCurrency The currency the feed's resulting price is in terms of.\n /// @custom:param unitCurrency The currency being priced by the feed.\n mapping(uint256 projectId => mapping(uint256 pricingCurrency => mapping(uint256 unitCurrency => IJBPriceFeed)))\n public\n override priceFeedFor;\n\n //*********************************************************************//\n // ---------------------------- constructor -------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n /// @param permissions A contract storing permissions.\n /// @param projects A contract which mints ERC-721s that represent project ownership and transfers.\n /// @param owner The address that will own the contract.\n constructor(\n IJBDirectory directory,\n IJBPermissions permissions,\n IJBProjects projects,\n address owner\n )\n JBControlled(directory)\n JBPermissioned(permissions)\n Ownable(owner)\n {\n PROJECTS = projects;\n }\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\n /// @param projectId The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all\n /// projects.\n /// @param pricingCurrency The currency the feed's resulting price is in terms of.\n /// @param unitCurrency The currency being priced by the feed.\n /// @param decimals The number of decimals the returned fixed point price should include.\n /// @return The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of\n /// decimals.\n function pricePerUnitOf(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n uint256 decimals\n )\n public\n view\n override\n returns (uint256)\n {\n // If the `pricingCurrency` is the `unitCurrency`, return 1 since they have the same price. Include the\n // desired number of decimals.\n if (pricingCurrency == unitCurrency) return 10 ** decimals;\n\n // Get a reference to the price feed.\n IJBPriceFeed feed = priceFeedFor[projectId][pricingCurrency][unitCurrency];\n\n // If the feed exists, return its price.\n if (feed != IJBPriceFeed(address(0))) return feed.currentUnitPrice(decimals);\n\n // Try getting the inverse feed.\n feed = priceFeedFor[projectId][unitCurrency][pricingCurrency];\n\n // If it exists, return the inverse of its price.\n if (feed != IJBPriceFeed(address(0))) {\n return mulDiv(10 ** decimals, 10 ** decimals, feed.currentUnitPrice(decimals));\n }\n\n // Check for a default feed (project ID 0) if not found.\n if (projectId != DEFAULT_PROJECT_ID) {\n return pricePerUnitOf({\n projectId: DEFAULT_PROJECT_ID,\n pricingCurrency: pricingCurrency,\n unitCurrency: unitCurrency,\n decimals: decimals\n });\n }\n\n // No price feed available, revert.\n revert JBPrices_PriceFeedNotFound();\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\n /// @dev Price feeds can only be added, not modified or removed.\n /// @dev This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\n /// @param projectId The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price\n /// feed.\n /// @param pricingCurrency The currency the feed's output price is in terms of.\n /// @param unitCurrency The currency being priced by the feed.\n /// @param feed The address of the price feed to add.\n function addPriceFeedFor(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n IJBPriceFeed feed\n )\n external\n override\n {\n // Ensure default price feeds can only be set by this contract's owner, and that other `projectId`s can only be\n // set by the controller\n projectId == DEFAULT_PROJECT_ID ? _checkOwner() : _onlyControllerOf(projectId);\n\n // Make sure the pricing currency isn't 0.\n if (pricingCurrency == 0) revert JBPrices_ZeroPricingCurrency();\n\n // Make sure the unit currency isn't 0.\n if (unitCurrency == 0) revert JBPrices_ZeroUnitCurrency();\n\n // Make sure there isn't already a default price feed for the pair or its inverse.\n if (\n priceFeedFor[DEFAULT_PROJECT_ID][pricingCurrency][unitCurrency] != IJBPriceFeed(address(0))\n || priceFeedFor[DEFAULT_PROJECT_ID][unitCurrency][pricingCurrency] != IJBPriceFeed(address(0))\n ) {\n revert JBPrices_PriceFeedAlreadyExists(\n priceFeedFor[DEFAULT_PROJECT_ID][pricingCurrency][unitCurrency] != IJBPriceFeed(address(0))\n ? priceFeedFor[DEFAULT_PROJECT_ID][pricingCurrency][unitCurrency]\n : priceFeedFor[DEFAULT_PROJECT_ID][unitCurrency][pricingCurrency]\n );\n }\n\n // Make sure this project doesn't already have a price feed for the pair or its inverse.\n if (\n priceFeedFor[projectId][pricingCurrency][unitCurrency] != IJBPriceFeed(address(0))\n || priceFeedFor[projectId][unitCurrency][pricingCurrency] != IJBPriceFeed(address(0))\n ) {\n revert JBPrices_PriceFeedAlreadyExists(\n priceFeedFor[projectId][pricingCurrency][unitCurrency] != IJBPriceFeed(address(0))\n ? priceFeedFor[projectId][pricingCurrency][unitCurrency]\n : priceFeedFor[projectId][unitCurrency][pricingCurrency]\n );\n }\n\n // Store the feed.\n priceFeedFor[projectId][pricingCurrency][unitCurrency] = feed;\n\n emit AddPriceFeed({\n projectId: projectId,\n pricingCurrency: pricingCurrency,\n unitCurrency: unitCurrency,\n feed: feed,\n caller: msg.sender\n });\n }\n}\n" + }, + "src/interfaces/IJBPriceFeed.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBPriceFeed {\n function currentUnitPrice(uint256 targetDecimals) external view returns (uint256);\n}\n" + }, + "src/interfaces/IJBPrices.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBPriceFeed} from \"./IJBPriceFeed.sol\";\nimport {IJBProjects} from \"./IJBProjects.sol\";\n\ninterface IJBPrices {\n event AddPriceFeed(\n uint256 indexed projectId,\n uint256 indexed pricingCurrency,\n uint256 indexed unitCurrency,\n IJBPriceFeed feed,\n address caller\n );\n\n function DEFAULT_PROJECT_ID() external view returns (uint256);\n function PROJECTS() external view returns (IJBProjects);\n\n function priceFeedFor(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency\n )\n external\n view\n returns (IJBPriceFeed);\n function pricePerUnitOf(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n uint256 decimals\n )\n external\n view\n returns (uint256);\n\n function addPriceFeedFor(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n IJBPriceFeed feed\n )\n external;\n}\n" + }, + "node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (governance/utils/IVotes.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Common interface for {ERC20Votes}, {ERC721Votes}, and other {Votes}-enabled contracts.\n */\ninterface IVotes {\n /**\n * @dev The signature used has expired.\n */\n error VotesExpiredSignature(uint256 expiry);\n\n /**\n * @dev Emitted when an account changes their delegate.\n */\n event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate);\n\n /**\n * @dev Emitted when a token transfer or delegate change results in changes to a delegate's number of voting units.\n */\n event DelegateVotesChanged(address indexed delegate, uint256 previousVotes, uint256 newVotes);\n\n /**\n * @dev Returns the current amount of votes that `account` has.\n */\n function getVotes(address account) external view returns (uint256);\n\n /**\n * @dev Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is\n * configured to use block numbers, this will return the value at the end of the corresponding block.\n */\n function getPastVotes(address account, uint256 timepoint) external view returns (uint256);\n\n /**\n * @dev Returns the total supply of votes available at a specific moment in the past. If the `clock()` is\n * configured to use block numbers, this will return the value at the end of the corresponding block.\n *\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\n * vote.\n */\n function getPastTotalSupply(uint256 timepoint) external view returns (uint256);\n\n /**\n * @dev Returns the delegate that `account` has chosen.\n */\n function delegates(address account) external view returns (address);\n\n /**\n * @dev Delegates votes from the sender to `delegatee`.\n */\n function delegate(address delegatee) external;\n\n /**\n * @dev Delegates votes from signer to `delegatee`.\n */\n function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external;\n}\n" + }, + "node_modules/@openzeppelin/contracts/governance/utils/Votes.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (governance/utils/Votes.sol)\npragma solidity ^0.8.20;\n\nimport {IERC5805} from \"../../interfaces/IERC5805.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {Nonces} from \"../../utils/Nonces.sol\";\nimport {EIP712} from \"../../utils/cryptography/EIP712.sol\";\nimport {Checkpoints} from \"../../utils/structs/Checkpoints.sol\";\nimport {SafeCast} from \"../../utils/math/SafeCast.sol\";\nimport {ECDSA} from \"../../utils/cryptography/ECDSA.sol\";\nimport {Time} from \"../../utils/types/Time.sol\";\n\n/**\n * @dev This is a base abstract contract that tracks voting units, which are a measure of voting power that can be\n * transferred, and provides a system of vote delegation, where an account can delegate its voting units to a sort of\n * \"representative\" that will pool delegated voting units from different accounts and can then use it to vote in\n * decisions. In fact, voting units _must_ be delegated in order to count as actual votes, and an account has to\n * delegate those votes to itself if it wishes to participate in decisions and does not have a trusted representative.\n *\n * This contract is often combined with a token contract such that voting units correspond to token units. For an\n * example, see {ERC721Votes}.\n *\n * The full history of delegate votes is tracked on-chain so that governance protocols can consider votes as distributed\n * at a particular block number to protect against flash loans and double voting. The opt-in delegate system makes the\n * cost of this history tracking optional.\n *\n * When using this module the derived contract must implement {_getVotingUnits} (for example, make it return\n * {ERC721-balanceOf}), and can use {_transferVotingUnits} to track a change in the distribution of those units (in the\n * previous example, it would be included in {ERC721-_update}).\n */\nabstract contract Votes is Context, EIP712, Nonces, IERC5805 {\n using Checkpoints for Checkpoints.Trace208;\n\n bytes32 private constant DELEGATION_TYPEHASH =\n keccak256(\"Delegation(address delegatee,uint256 nonce,uint256 expiry)\");\n\n mapping(address account => address) private _delegatee;\n\n mapping(address delegatee => Checkpoints.Trace208) private _delegateCheckpoints;\n\n Checkpoints.Trace208 private _totalCheckpoints;\n\n /**\n * @dev The clock was incorrectly modified.\n */\n error ERC6372InconsistentClock();\n\n /**\n * @dev Lookup to future votes is not available.\n */\n error ERC5805FutureLookup(uint256 timepoint, uint48 clock);\n\n /**\n * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based\n * checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\n */\n function clock() public view virtual returns (uint48) {\n return Time.blockNumber();\n }\n\n /**\n * @dev Machine-readable description of the clock as specified in ERC-6372.\n */\n // solhint-disable-next-line func-name-mixedcase\n function CLOCK_MODE() public view virtual returns (string memory) {\n // Check that the clock was not modified\n if (clock() != Time.blockNumber()) {\n revert ERC6372InconsistentClock();\n }\n return \"mode=blocknumber&from=default\";\n }\n\n /**\n * @dev Returns the current amount of votes that `account` has.\n */\n function getVotes(address account) public view virtual returns (uint256) {\n return _delegateCheckpoints[account].latest();\n }\n\n /**\n * @dev Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is\n * configured to use block numbers, this will return the value at the end of the corresponding block.\n *\n * Requirements:\n *\n * - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\n */\n function getPastVotes(address account, uint256 timepoint) public view virtual returns (uint256) {\n uint48 currentTimepoint = clock();\n if (timepoint >= currentTimepoint) {\n revert ERC5805FutureLookup(timepoint, currentTimepoint);\n }\n return _delegateCheckpoints[account].upperLookupRecent(SafeCast.toUint48(timepoint));\n }\n\n /**\n * @dev Returns the total supply of votes available at a specific moment in the past. If the `clock()` is\n * configured to use block numbers, this will return the value at the end of the corresponding block.\n *\n * NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes.\n * Votes that have not been delegated are still part of total supply, even though they would not participate in a\n * vote.\n *\n * Requirements:\n *\n * - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\n */\n function getPastTotalSupply(uint256 timepoint) public view virtual returns (uint256) {\n uint48 currentTimepoint = clock();\n if (timepoint >= currentTimepoint) {\n revert ERC5805FutureLookup(timepoint, currentTimepoint);\n }\n return _totalCheckpoints.upperLookupRecent(SafeCast.toUint48(timepoint));\n }\n\n /**\n * @dev Returns the current total supply of votes.\n */\n function _getTotalSupply() internal view virtual returns (uint256) {\n return _totalCheckpoints.latest();\n }\n\n /**\n * @dev Returns the delegate that `account` has chosen.\n */\n function delegates(address account) public view virtual returns (address) {\n return _delegatee[account];\n }\n\n /**\n * @dev Delegates votes from the sender to `delegatee`.\n */\n function delegate(address delegatee) public virtual {\n address account = _msgSender();\n _delegate(account, delegatee);\n }\n\n /**\n * @dev Delegates votes from signer to `delegatee`.\n */\n function delegateBySig(\n address delegatee,\n uint256 nonce,\n uint256 expiry,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual {\n if (block.timestamp > expiry) {\n revert VotesExpiredSignature(expiry);\n }\n address signer = ECDSA.recover(\n _hashTypedDataV4(keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry))),\n v,\n r,\n s\n );\n _useCheckedNonce(signer, nonce);\n _delegate(signer, delegatee);\n }\n\n /**\n * @dev Delegate all of `account`'s voting units to `delegatee`.\n *\n * Emits events {IVotes-DelegateChanged} and {IVotes-DelegateVotesChanged}.\n */\n function _delegate(address account, address delegatee) internal virtual {\n address oldDelegate = delegates(account);\n _delegatee[account] = delegatee;\n\n emit DelegateChanged(account, oldDelegate, delegatee);\n _moveDelegateVotes(oldDelegate, delegatee, _getVotingUnits(account));\n }\n\n /**\n * @dev Transfers, mints, or burns voting units. To register a mint, `from` should be zero. To register a burn, `to`\n * should be zero. Total supply of voting units will be adjusted with mints and burns.\n */\n function _transferVotingUnits(address from, address to, uint256 amount) internal virtual {\n if (from == address(0)) {\n _push(_totalCheckpoints, _add, SafeCast.toUint208(amount));\n }\n if (to == address(0)) {\n _push(_totalCheckpoints, _subtract, SafeCast.toUint208(amount));\n }\n _moveDelegateVotes(delegates(from), delegates(to), amount);\n }\n\n /**\n * @dev Moves delegated votes from one delegate to another.\n */\n function _moveDelegateVotes(address from, address to, uint256 amount) internal virtual {\n if (from != to && amount > 0) {\n if (from != address(0)) {\n (uint256 oldValue, uint256 newValue) = _push(\n _delegateCheckpoints[from],\n _subtract,\n SafeCast.toUint208(amount)\n );\n emit DelegateVotesChanged(from, oldValue, newValue);\n }\n if (to != address(0)) {\n (uint256 oldValue, uint256 newValue) = _push(\n _delegateCheckpoints[to],\n _add,\n SafeCast.toUint208(amount)\n );\n emit DelegateVotesChanged(to, oldValue, newValue);\n }\n }\n }\n\n /**\n * @dev Get number of checkpoints for `account`.\n */\n function _numCheckpoints(address account) internal view virtual returns (uint32) {\n return SafeCast.toUint32(_delegateCheckpoints[account].length());\n }\n\n /**\n * @dev Get the `pos`-th checkpoint for `account`.\n */\n function _checkpoints(\n address account,\n uint32 pos\n ) internal view virtual returns (Checkpoints.Checkpoint208 memory) {\n return _delegateCheckpoints[account].at(pos);\n }\n\n function _push(\n Checkpoints.Trace208 storage store,\n function(uint208, uint208) view returns (uint208) op,\n uint208 delta\n ) private returns (uint208 oldValue, uint208 newValue) {\n return store.push(clock(), op(store.latest(), delta));\n }\n\n function _add(uint208 a, uint208 b) private pure returns (uint208) {\n return a + b;\n }\n\n function _subtract(uint208 a, uint208 b) private pure returns (uint208) {\n return a - b;\n }\n\n /**\n * @dev Must return the voting units held by an account.\n */\n function _getVotingUnits(address) internal view virtual returns (uint256);\n}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC5267 {\n /**\n * @dev MAY be emitted to signal that the domain could have changed.\n */\n event EIP712DomainChanged();\n\n /**\n * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n * signature.\n */\n function eip712Domain()\n external\n view\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n );\n}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5805.sol)\n\npragma solidity ^0.8.20;\n\nimport {IVotes} from \"../governance/utils/IVotes.sol\";\nimport {IERC6372} from \"./IERC6372.sol\";\n\ninterface IERC5805 is IERC6372, IVotes {}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC6372.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC6372 {\n /**\n * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting).\n */\n function clock() external view returns (uint48);\n\n /**\n * @dev Description of the clock\n */\n // solhint-disable-next-line func-name-mixedcase\n function CLOCK_MODE() external view returns (string memory);\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.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 *\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 ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => 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 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 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 returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual 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 `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` 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 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\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 `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` 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 * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` 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 * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\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 value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens as the allowance of `spender` over the\n * 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 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` 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 value) external returns (bool);\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20Permit} from \"./IERC20Permit.sol\";\nimport {ERC20} from \"../ERC20.sol\";\nimport {ECDSA} from \"../../../utils/cryptography/ECDSA.sol\";\nimport {EIP712} from \"../../../utils/cryptography/EIP712.sol\";\nimport {Nonces} from \"../../../utils/Nonces.sol\";\n\n/**\n * @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {\n bytes32 private constant PERMIT_TYPEHASH =\n keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n\n /**\n * @dev Permit deadline has expired.\n */\n error ERC2612ExpiredSignature(uint256 deadline);\n\n /**\n * @dev Mismatched signature.\n */\n error ERC2612InvalidSigner(address signer, address owner);\n\n /**\n * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n *\n * It's a good idea to use the same `name` that is defined as the ERC-20 token name.\n */\n constructor(string memory name) EIP712(name, \"1\") {}\n\n /**\n * @inheritdoc IERC20Permit\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) public virtual {\n if (block.timestamp > deadline) {\n revert ERC2612ExpiredSignature(deadline);\n }\n\n bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\n\n bytes32 hash = _hashTypedDataV4(structHash);\n\n address signer = ECDSA.recover(hash, v, r, s);\n if (signer != owner) {\n revert ERC2612InvalidSigner(signer, owner);\n }\n\n _approve(owner, spender, value);\n }\n\n /**\n * @inheritdoc IERC20Permit\n */\n function nonces(address owner) public view virtual override(IERC20Permit, Nonces) returns (uint256) {\n return super.nonces(owner);\n }\n\n /**\n * @inheritdoc IERC20Permit\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\n return _domainSeparatorV4();\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Votes.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC20} from \"../ERC20.sol\";\nimport {Votes} from \"../../../governance/utils/Votes.sol\";\nimport {Checkpoints} from \"../../../utils/structs/Checkpoints.sol\";\n\n/**\n * @dev Extension of ERC-20 to support Compound-like voting and delegation. This version is more generic than Compound's,\n * and supports token supply up to 2^208^ - 1, while COMP is limited to 2^96^ - 1.\n *\n * NOTE: This contract does not provide interface compatibility with Compound's COMP token.\n *\n * This extension keeps a history (checkpoints) of each account's vote power. Vote power can be delegated either\n * by calling the {Votes-delegate} function directly, or by providing a signature to be used with {Votes-delegateBySig}. Voting\n * power can be queried through the public accessors {Votes-getVotes} and {Votes-getPastVotes}.\n *\n * By default, token balance does not account for voting power. This makes transfers cheaper. The downside is that it\n * requires users to delegate to themselves in order to activate checkpoints and have their voting power tracked.\n */\nabstract contract ERC20Votes is ERC20, Votes {\n /**\n * @dev Total supply cap has been exceeded, introducing a risk of votes overflowing.\n */\n error ERC20ExceededSafeSupply(uint256 increasedSupply, uint256 cap);\n\n /**\n * @dev Maximum token supply. Defaults to `type(uint208).max` (2^208^ - 1).\n *\n * This maximum is enforced in {_update}. It limits the total supply of the token, which is otherwise a uint256,\n * so that checkpoints can be stored in the Trace208 structure used by {Votes}. Increasing this value will not\n * remove the underlying limitation, and will cause {_update} to fail because of a math overflow in\n * {Votes-_transferVotingUnits}. An override could be used to further restrict the total supply (to a lower value) if\n * additional logic requires it. When resolving override conflicts on this function, the minimum should be\n * returned.\n */\n function _maxSupply() internal view virtual returns (uint256) {\n return type(uint208).max;\n }\n\n /**\n * @dev Move voting power when tokens are transferred.\n *\n * Emits a {IVotes-DelegateVotesChanged} event.\n */\n function _update(address from, address to, uint256 value) internal virtual override {\n super._update(from, to, value);\n if (from == address(0)) {\n uint256 supply = totalSupply();\n uint256 cap = _maxSupply();\n if (supply > cap) {\n revert ERC20ExceededSafeSupply(supply, cap);\n }\n }\n _transferVotingUnits(from, to, value);\n }\n\n /**\n * @dev Returns the voting units of an `account`.\n *\n * WARNING: Overriding this function may compromise the internal vote accounting.\n * `ERC20Votes` assumes tokens map to voting units 1:1 and this is not easy to change.\n */\n function _getVotingUnits(address account) internal view virtual override returns (uint256) {\n return balanceOf(account);\n }\n\n /**\n * @dev Get number of checkpoints for `account`.\n */\n function numCheckpoints(address account) public view virtual returns (uint32) {\n return _numCheckpoints(account);\n }\n\n /**\n * @dev Get the `pos`-th checkpoint for `account`.\n */\n function checkpoints(address account, uint32 pos) public view virtual returns (Checkpoints.Checkpoint208 memory) {\n return _checkpoints(account, pos);\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\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" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n * try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n * doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n * token.safeTransferFrom(msg.sender, address(this), value);\n * ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n /**\n * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n * given ``owner``'s signed approval.\n *\n * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n * ordering also apply here.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n * - `deadline` must be a timestamp in the future.\n * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n * over the EIP712-formatted function arguments.\n * - the signature must use ``owner``'s current nonce (see {nonces}).\n *\n * For more information on the signature format, see the\n * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n * section].\n *\n * CAUTION: See Security Considerations above.\n */\n function permit(\n address owner,\n address spender,\n uint256 value,\n uint256 deadline,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) external;\n\n /**\n * @dev Returns the current nonce for `owner`. This value must be\n * included whenever a signature is generated for {permit}.\n *\n * Every successful call to {permit} increases ``owner``'s nonce by one. This\n * prevents a signature from being used multiple times.\n */\n function nonces(address owner) external view returns (uint256);\n\n /**\n * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n */\n // solhint-disable-next-line func-name-mixedcase\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/Nonces.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\n */\nabstract contract Nonces {\n /**\n * @dev The nonce used for an `account` is not the expected current nonce.\n */\n error InvalidAccountNonce(address account, uint256 currentNonce);\n\n mapping(address account => uint256) private _nonces;\n\n /**\n * @dev Returns the next unused nonce for an address.\n */\n function nonces(address owner) public view virtual returns (uint256) {\n return _nonces[owner];\n }\n\n /**\n * @dev Consumes a nonce.\n *\n * Returns the current value and increments nonce.\n */\n function _useNonce(address owner) internal virtual returns (uint256) {\n // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\n // decremented or reset. This guarantees that the nonce never overflows.\n unchecked {\n // It is important to do x++ and not ++x here.\n return _nonces[owner]++;\n }\n }\n\n /**\n * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\n */\n function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\n uint256 current = _useNonce(owner);\n if (nonce != current) {\n revert InvalidAccountNonce(owner, current);\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/ShortStrings.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ShortStrings.sol)\n\npragma solidity ^0.8.20;\n\nimport {StorageSlot} from \"./StorageSlot.sol\";\n\n// | string | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA |\n// | length | 0x BB |\ntype ShortString is bytes32;\n\n/**\n * @dev This library provides functions to convert short memory strings\n * into a `ShortString` type that can be used as an immutable variable.\n *\n * Strings of arbitrary length can be optimized using this library if\n * they are short enough (up to 31 bytes) by packing them with their\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\n * fallback mechanism can be used for every other case.\n *\n * Usage example:\n *\n * ```solidity\n * contract Named {\n * using ShortStrings for *;\n *\n * ShortString private immutable _name;\n * string private _nameFallback;\n *\n * constructor(string memory contractName) {\n * _name = contractName.toShortStringWithFallback(_nameFallback);\n * }\n *\n * function name() external view returns (string memory) {\n * return _name.toStringWithFallback(_nameFallback);\n * }\n * }\n * ```\n */\nlibrary ShortStrings {\n // Used as an identifier for strings longer than 31 bytes.\n bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\n\n error StringTooLong(string str);\n error InvalidShortString();\n\n /**\n * @dev Encode a string of at most 31 chars into a `ShortString`.\n *\n * This will trigger a `StringTooLong` error is the input string is too long.\n */\n function toShortString(string memory str) internal pure returns (ShortString) {\n bytes memory bstr = bytes(str);\n if (bstr.length > 31) {\n revert StringTooLong(str);\n }\n return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\n }\n\n /**\n * @dev Decode a `ShortString` back to a \"normal\" string.\n */\n function toString(ShortString sstr) internal pure returns (string memory) {\n uint256 len = byteLength(sstr);\n // using `new string(len)` would work locally but is not memory safe.\n string memory str = new string(32);\n assembly (\"memory-safe\") {\n mstore(str, len)\n mstore(add(str, 0x20), sstr)\n }\n return str;\n }\n\n /**\n * @dev Return the length of a `ShortString`.\n */\n function byteLength(ShortString sstr) internal pure returns (uint256) {\n uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\n if (result > 31) {\n revert InvalidShortString();\n }\n return result;\n }\n\n /**\n * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\n */\n function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\n if (bytes(value).length < 32) {\n return toShortString(value);\n } else {\n StorageSlot.getStringSlot(store).value = value;\n return ShortString.wrap(FALLBACK_SENTINEL);\n }\n }\n\n /**\n * @dev Decode a string that was encoded to `ShortString` or written to storage using {setWithFallback}.\n */\n function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n return toString(value);\n } else {\n return store;\n }\n }\n\n /**\n * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n * {setWithFallback}.\n *\n * WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\n */\n function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\n if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n return byteLength(value);\n } else {\n return bytes(store).length;\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\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 ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\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(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\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 Int256Slot {\n int256 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 assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\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 assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\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 assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(\n bytes32 hash,\n bytes memory signature\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n assembly (\"memory-safe\") {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"./MessageHashUtils.sol\";\nimport {ShortStrings, ShortString} from \"../ShortStrings.sol\";\nimport {IERC5267} from \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\n */\nabstract contract EIP712 is IERC5267 {\n using ShortStrings for *;\n\n bytes32 private constant TYPE_HASH =\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n // invalidate the cached domain separator if the chain id changes.\n bytes32 private immutable _cachedDomainSeparator;\n uint256 private immutable _cachedChainId;\n address private immutable _cachedThis;\n\n bytes32 private immutable _hashedName;\n bytes32 private immutable _hashedVersion;\n\n ShortString private immutable _name;\n ShortString private immutable _version;\n string private _nameFallback;\n string private _versionFallback;\n\n /**\n * @dev Initializes the domain separator and parameter caches.\n *\n * The meaning of `name` and `version` is specified in\n * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n *\n * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n * - `version`: the current major version of the signing domain.\n *\n * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n * contract upgrade].\n */\n constructor(string memory name, string memory version) {\n _name = name.toShortStringWithFallback(_nameFallback);\n _version = version.toShortStringWithFallback(_versionFallback);\n _hashedName = keccak256(bytes(name));\n _hashedVersion = keccak256(bytes(version));\n\n _cachedChainId = block.chainid;\n _cachedDomainSeparator = _buildDomainSeparator();\n _cachedThis = address(this);\n }\n\n /**\n * @dev Returns the domain separator for the current chain.\n */\n function _domainSeparatorV4() internal view returns (bytes32) {\n if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n return _cachedDomainSeparator;\n } else {\n return _buildDomainSeparator();\n }\n }\n\n function _buildDomainSeparator() private view returns (bytes32) {\n return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n }\n\n /**\n * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n * function returns the hash of the fully encoded EIP712 message for this domain.\n *\n * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n *\n * ```solidity\n * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n * keccak256(\"Mail(address to,string contents)\"),\n * mailTo,\n * keccak256(bytes(mailContents))\n * )));\n * address signer = ECDSA.recover(digest, signature);\n * ```\n */\n function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n }\n\n /**\n * @dev See {IERC-5267}.\n */\n function eip712Domain()\n public\n view\n virtual\n returns (\n bytes1 fields,\n string memory name,\n string memory version,\n uint256 chainId,\n address verifyingContract,\n bytes32 salt,\n uint256[] memory extensions\n )\n {\n return (\n hex\"0f\", // 01111\n _EIP712Name(),\n _EIP712Version(),\n block.chainid,\n address(this),\n bytes32(0),\n new uint256[](0)\n );\n }\n\n /**\n * @dev The name parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _name which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Name() internal view returns (string memory) {\n return _name.toStringWithFallback(_nameFallback);\n }\n\n /**\n * @dev The version parameter for the EIP712 domain.\n *\n * NOTE: By default this function reads _version which is an immutable value.\n * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n */\n // solhint-disable-next-line func-name-mixedcase\n function _EIP712Version() internal view returns (string memory) {\n return _version.toStringWithFallback(_versionFallback);\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing a bytes32 `messageHash` with\n * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n * keccak256, although any bytes32 value can be safely used because the final digest will\n * be re-hashed.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n assembly (\"memory-safe\") {\n mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n }\n }\n\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x45` (`personal_sign` messages).\n *\n * The digest is calculated by prefixing an arbitrary `message` with\n * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n * hash signed when using the https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] JSON-RPC method.\n *\n * See {ECDSA-recover}.\n */\n function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n return\n keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n }\n\n /**\n * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n * `0x00` (data with intended validator).\n *\n * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n * `validator` address. Then hashing the result.\n *\n * See {ECDSA-recover}.\n */\n function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n }\n\n /**\n * @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n *\n * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n *\n * See {ECDSA-recover}.\n */\n function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n mstore(ptr, hex\"19_01\")\n mstore(add(ptr, 0x02), domainSeparator)\n mstore(add(ptr, 0x22), structHash)\n digest := keccak256(ptr, 0x42)\n }\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/Checkpoints.sol)\n// This file was procedurally generated from scripts/generate/templates/Checkpoints.js.\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"../math/Math.sol\";\n\n/**\n * @dev This library defines the `Trace*` 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.Trace*` in your contract, and store a new\n * checkpoint for the current transaction block using the {push} function.\n */\nlibrary Checkpoints {\n /**\n * @dev A value was attempted to be inserted on a past checkpoint.\n */\n error CheckpointUnorderedInsertion();\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 * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint32).max` key set will disable the\n * library.\n */\n function push(\n Trace224 storage self,\n uint32 key,\n uint224 value\n ) internal returns (uint224 oldValue, uint224 newValue) {\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\n * 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\n * 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\n * if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n * 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 - Math.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 storage 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 Returns checkpoint at given position.\n */\n function at(Trace224 storage self, uint32 pos) internal view returns (Checkpoint224 memory) {\n return self._checkpoints[pos];\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(\n Checkpoint224[] storage self,\n uint32 key,\n uint224 value\n ) private returns (uint224 oldValue, uint224 newValue) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n Checkpoint224 storage last = _unsafeAccess(self, pos - 1);\n uint32 lastKey = last._key;\n uint224 lastValue = last._value;\n\n // Checkpoint keys must be non-decreasing.\n if (lastKey > key) {\n revert CheckpointUnorderedInsertion();\n }\n\n // Update or push new checkpoint\n if (lastKey == key) {\n last._value = value;\n } else {\n self.push(Checkpoint224({_key: key, _value: value}));\n }\n return (lastValue, 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 first (oldest) checkpoint with key strictly bigger than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `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 = Math.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 greater or equal than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `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 = Math.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 Trace208 {\n Checkpoint208[] _checkpoints;\n }\n\n struct Checkpoint208 {\n uint48 _key;\n uint208 _value;\n }\n\n /**\n * @dev Pushes a (`key`, `value`) pair into a Trace208 so that it is stored as the checkpoint.\n *\n * Returns previous value and new value.\n *\n * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint48).max` key set will disable the\n * library.\n */\n function push(\n Trace208 storage self,\n uint48 key,\n uint208 value\n ) internal returns (uint208 oldValue, uint208 newValue) {\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\n * there is none.\n */\n function lowerLookup(Trace208 storage self, uint48 key) internal view returns (uint208) {\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\n * if there is none.\n */\n function upperLookup(Trace208 storage self, uint48 key) internal view returns (uint208) {\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\n * if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n * keys).\n */\n function upperLookupRecent(Trace208 storage self, uint48 key) internal view returns (uint208) {\n uint256 len = self._checkpoints.length;\n\n uint256 low = 0;\n uint256 high = len;\n\n if (len > 5) {\n uint256 mid = len - Math.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(Trace208 storage self) internal view returns (uint208) {\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(Trace208 storage self) internal view returns (bool exists, uint48 _key, uint208 _value) {\n uint256 pos = self._checkpoints.length;\n if (pos == 0) {\n return (false, 0, 0);\n } else {\n Checkpoint208 storage 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(Trace208 storage self) internal view returns (uint256) {\n return self._checkpoints.length;\n }\n\n /**\n * @dev Returns checkpoint at given position.\n */\n function at(Trace208 storage self, uint32 pos) internal view returns (Checkpoint208 memory) {\n return self._checkpoints[pos];\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(\n Checkpoint208[] storage self,\n uint48 key,\n uint208 value\n ) private returns (uint208 oldValue, uint208 newValue) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n Checkpoint208 storage last = _unsafeAccess(self, pos - 1);\n uint48 lastKey = last._key;\n uint208 lastValue = last._value;\n\n // Checkpoint keys must be non-decreasing.\n if (lastKey > key) {\n revert CheckpointUnorderedInsertion();\n }\n\n // Update or push new checkpoint\n if (lastKey == key) {\n last._value = value;\n } else {\n self.push(Checkpoint208({_key: key, _value: value}));\n }\n return (lastValue, value);\n } else {\n self.push(Checkpoint208({_key: key, _value: value}));\n return (0, value);\n }\n }\n\n /**\n * @dev Return the index of the first (oldest) checkpoint with key strictly bigger than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _upperBinaryLookup(\n Checkpoint208[] storage self,\n uint48 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = Math.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 greater or equal than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `high`.\n *\n * WARNING: `high` should not be greater than the array's length.\n */\n function _lowerBinaryLookup(\n Checkpoint208[] storage self,\n uint48 key,\n uint256 low,\n uint256 high\n ) private view returns (uint256) {\n while (low < high) {\n uint256 mid = Math.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 Checkpoint208[] storage self,\n uint256 pos\n ) private pure returns (Checkpoint208 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 * IMPORTANT: Never accept `key` as a user input, since an arbitrary `type(uint96).max` key set will disable the\n * library.\n */\n function push(\n Trace160 storage self,\n uint96 key,\n uint160 value\n ) internal returns (uint160 oldValue, uint160 newValue) {\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\n * 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\n * 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\n * if there is none.\n *\n * NOTE: This is a variant of {upperLookup} that is optimised to find \"recent\" checkpoint (checkpoints with high\n * 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 - Math.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 storage 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 Returns checkpoint at given position.\n */\n function at(Trace160 storage self, uint32 pos) internal view returns (Checkpoint160 memory) {\n return self._checkpoints[pos];\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(\n Checkpoint160[] storage self,\n uint96 key,\n uint160 value\n ) private returns (uint160 oldValue, uint160 newValue) {\n uint256 pos = self.length;\n\n if (pos > 0) {\n Checkpoint160 storage last = _unsafeAccess(self, pos - 1);\n uint96 lastKey = last._key;\n uint160 lastValue = last._value;\n\n // Checkpoint keys must be non-decreasing.\n if (lastKey > key) {\n revert CheckpointUnorderedInsertion();\n }\n\n // Update or push new checkpoint\n if (lastKey == key) {\n last._value = value;\n } else {\n self.push(Checkpoint160({_key: key, _value: value}));\n }\n return (lastValue, 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 first (oldest) checkpoint with key strictly bigger than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `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 = Math.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 greater or equal than the search key, or `high`\n * if there is none. `low` and `high` define a section where to do the search, with inclusive `low` and exclusive\n * `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 = Math.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" + }, + "node_modules/@openzeppelin/contracts/utils/types/Time.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/types/Time.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"../math/Math.sol\";\nimport {SafeCast} from \"../math/SafeCast.sol\";\n\n/**\n * @dev This library provides helpers for manipulating time-related objects.\n *\n * It uses the following types:\n * - `uint48` for timepoints\n * - `uint32` for durations\n *\n * While the library doesn't provide specific types for timepoints and duration, it does provide:\n * - a `Delay` type to represent duration that can be programmed to change value automatically at a given point\n * - additional helper functions\n */\nlibrary Time {\n using Time for *;\n\n /**\n * @dev Get the block timestamp as a Timepoint.\n */\n function timestamp() internal view returns (uint48) {\n return SafeCast.toUint48(block.timestamp);\n }\n\n /**\n * @dev Get the block number as a Timepoint.\n */\n function blockNumber() internal view returns (uint48) {\n return SafeCast.toUint48(block.number);\n }\n\n // ==================================================== Delay =====================================================\n /**\n * @dev A `Delay` is a uint32 duration that can be programmed to change value automatically at a given point in the\n * future. The \"effect\" timepoint describes when the transitions happens from the \"old\" value to the \"new\" value.\n * This allows updating the delay applied to some operation while keeping some guarantees.\n *\n * In particular, the {update} function guarantees that if the delay is reduced, the old delay still applies for\n * some time. For example if the delay is currently 7 days to do an upgrade, the admin should not be able to set\n * the delay to 0 and upgrade immediately. If the admin wants to reduce the delay, the old delay (7 days) should\n * still apply for some time.\n *\n *\n * The `Delay` type is 112 bits long, and packs the following:\n *\n * ```\n * | [uint48]: effect date (timepoint)\n * | | [uint32]: value before (duration)\n * ↓ ↓ ↓ [uint32]: value after (duration)\n * 0xAAAAAAAAAAAABBBBBBBBCCCCCCCC\n * ```\n *\n * NOTE: The {get} and {withUpdate} functions operate using timestamps. Block number based delays are not currently\n * supported.\n */\n type Delay is uint112;\n\n /**\n * @dev Wrap a duration into a Delay to add the one-step \"update in the future\" feature\n */\n function toDelay(uint32 duration) internal pure returns (Delay) {\n return Delay.wrap(duration);\n }\n\n /**\n * @dev Get the value at a given timepoint plus the pending value and effect timepoint if there is a scheduled\n * change after this timepoint. If the effect timepoint is 0, then the pending value should not be considered.\n */\n function _getFullAt(\n Delay self,\n uint48 timepoint\n ) private pure returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n (valueBefore, valueAfter, effect) = self.unpack();\n return effect <= timepoint ? (valueAfter, 0, 0) : (valueBefore, valueAfter, effect);\n }\n\n /**\n * @dev Get the current value plus the pending value and effect timepoint if there is a scheduled change. If the\n * effect timepoint is 0, then the pending value should not be considered.\n */\n function getFull(Delay self) internal view returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n return _getFullAt(self, timestamp());\n }\n\n /**\n * @dev Get the current value.\n */\n function get(Delay self) internal view returns (uint32) {\n (uint32 delay, , ) = self.getFull();\n return delay;\n }\n\n /**\n * @dev Update a Delay object so that it takes a new duration after a timepoint that is automatically computed to\n * enforce the old delay at the moment of the update. Returns the updated Delay object and the timestamp when the\n * new delay becomes effective.\n */\n function withUpdate(\n Delay self,\n uint32 newValue,\n uint32 minSetback\n ) internal view returns (Delay updatedDelay, uint48 effect) {\n uint32 value = self.get();\n uint32 setback = uint32(Math.max(minSetback, value > newValue ? value - newValue : 0));\n effect = timestamp() + setback;\n return (pack(value, newValue, effect), effect);\n }\n\n /**\n * @dev Split a delay into its components: valueBefore, valueAfter and effect (transition timepoint).\n */\n function unpack(Delay self) internal pure returns (uint32 valueBefore, uint32 valueAfter, uint48 effect) {\n uint112 raw = Delay.unwrap(self);\n\n valueAfter = uint32(raw);\n valueBefore = uint32(raw >> 32);\n effect = uint48(raw >> 64);\n\n return (valueBefore, valueAfter, effect);\n }\n\n /**\n * @dev pack the components into a Delay object.\n */\n function pack(uint32 valueBefore, uint32 valueAfter, uint48 effect) internal pure returns (Delay) {\n return Delay.wrap((uint112(effect) << 64) | (uint112(valueBefore) << 32) | uint112(valueAfter));\n }\n}\n" + }, + "src/JBERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport {ERC20Permit, Nonces} from \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\nimport {ERC20Votes} from \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\";\nimport {Nonces} from \"@openzeppelin/contracts/utils/Nonces.sol\";\n\nimport {IJBToken} from \"./interfaces/IJBToken.sol\";\n\n/// @notice An ERC-20 token that can be used by a project in `JBTokens` and `JBController`.\n/// @dev By default, a project uses \"credits\" to track balances. Once a project sets their `IJBToken` using\n/// `JBController.deployERC20For(...)` or `JBController.setTokenFor(...)`, credits can be redeemed to claim tokens.\n/// @dev `JBController.deployERC20For(...)` deploys a `JBERC20` contract and sets it as the project's token.\ncontract JBERC20 is ERC20Votes, ERC20Permit, Ownable, IJBToken {\n //*********************************************************************//\n // --------------------- internal stored properties ------------------ //\n //*********************************************************************//\n\n /// @notice The token's name.\n // slither-disable-next-line shadowing-state\n string private _name;\n\n /// @notice The token's symbol.\n // slither-disable-next-line shadowing-state\n string private _symbol;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n constructor() Ownable(address(this)) ERC20(\"invalid\", \"invalid\") ERC20Permit(\"JBToken\") {}\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice The balance of the given address.\n /// @param account The account to get the balance of.\n /// @return The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\n function balanceOf(address account) public view override(ERC20, IJBToken) returns (uint256) {\n return super.balanceOf(account);\n }\n\n /// @notice The number of decimals used for this token's fixed point accounting.\n /// @return The number of decimals.\n function decimals() public view override(ERC20, IJBToken) returns (uint8) {\n return super.decimals();\n }\n\n /// @notice The token's name.\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /// @notice The token's symbol.\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /// @notice The total supply of this ERC20 i.e. the total number of tokens in existence.\n /// @return The total supply of this ERC20, as a fixed point number.\n function totalSupply() public view override(ERC20, IJBToken) returns (uint256) {\n return super.totalSupply();\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Burn some outstanding tokens.\n /// @dev Can only be called by this contract's owner.\n /// @param account The address to burn tokens from.\n /// @param amount The amount of tokens to burn, as a fixed point number with 18 decimals.\n function burn(address account, uint256 amount) external override onlyOwner {\n return _burn(account, amount);\n }\n\n /// @notice Mints more of this token.\n /// @dev Can only be called by this contract's owner.\n /// @param account The address to mint the new tokens to.\n /// @param amount The amount of tokens to mint, as a fixed point number with 18 decimals.\n function mint(address account, uint256 amount) external override onlyOwner {\n return _mint(account, amount);\n }\n\n //*********************************************************************//\n // ----------------------- public transactions ----------------------- //\n //*********************************************************************//\n\n /// @notice Initializes the token.\n /// @param name_ The token's name.\n /// @param symbol_ The token's symbol.\n /// @param owner The token contract's owner.\n function initialize(string memory name_, string memory symbol_, address owner) public override {\n // Prevent re-initialization by reverting if a name is already set or if the provided name is empty.\n if (bytes(_name).length != 0 || bytes(name_).length == 0) revert();\n\n _name = name_;\n _symbol = symbol_;\n\n // Transfer ownership to the owner.\n _transferOwnership(owner);\n }\n\n /// @notice Required override.\n function nonces(address owner) public view virtual override(ERC20Permit, Nonces) returns (uint256) {\n return super.nonces(owner);\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice Required override.\n function _update(address from, address to, uint256 value) internal virtual override(ERC20, ERC20Votes) {\n super._update(from, to, value);\n }\n}\n" + }, + "src/interfaces/IJBToken.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBToken {\n function balanceOf(address account) external view returns (uint256);\n function decimals() external view returns (uint8);\n function totalSupply() external view returns (uint256);\n\n function initialize(string memory name, string memory symbol, address owner) external;\n function burn(address account, uint256 amount) external;\n function mint(address account, uint256 amount) external;\n}\n" + }, + "node_modules/@openzeppelin/contracts/proxy/Clones.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (proxy/Clones.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"../utils/Errors.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-1167[ERC-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 */\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 return clone(implementation, 0);\n }\n\n /**\n * @dev Same as {xref-Clones-clone-address-}[clone], but with a `value` parameter to send native currency\n * to the new contract.\n *\n * NOTE: Using a non-zero value at creation will require the contract using this function (e.g. a factory)\n * to always have enough balance for new deployments. Consider exposing this function under a payable method.\n */\n function clone(address implementation, uint256 value) internal returns (address instance) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n assembly (\"memory-safe\") {\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(value, 0x09, 0x37)\n }\n if (instance == address(0)) {\n revert Errors.FailedDeployment();\n }\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 return cloneDeterministic(implementation, salt, 0);\n }\n\n /**\n * @dev Same as {xref-Clones-cloneDeterministic-address-bytes32-}[cloneDeterministic], but with\n * a `value` parameter to send native currency to the new contract.\n *\n * NOTE: Using a non-zero value at creation will require the contract using this function (e.g. a factory)\n * to always have enough balance for new deployments. Consider exposing this function under a payable method.\n */\n function cloneDeterministic(\n address implementation,\n bytes32 salt,\n uint256 value\n ) internal returns (address instance) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n assembly (\"memory-safe\") {\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(value, 0x09, 0x37, salt)\n }\n if (instance == address(0)) {\n revert Errors.FailedDeployment();\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 address deployer\n ) internal pure returns (address predicted) {\n assembly (\"memory-safe\") {\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 := and(keccak256(add(ptr, 0x43), 0x55), 0xffffffffffffffffffffffffffffffffffffffff)\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" + }, + "node_modules/@openzeppelin/contracts/utils/Errors.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n" + }, + "src/JBTokens.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {Clones} from \"@openzeppelin/contracts/proxy/Clones.sol\";\n\nimport {JBControlled} from \"./abstract/JBControlled.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBToken} from \"./interfaces/IJBToken.sol\";\nimport {IJBTokens} from \"./interfaces/IJBTokens.sol\";\n\n/// @notice Manages minting, burning, and balances of projects' tokens and token credits.\n/// @dev Token balances can either be ERC-20s or token credits. This contract manages these two representations and\n/// allows credit -> ERC-20 claiming.\n/// @dev The total supply of a project's tokens and the balance of each account are calculated in this contract.\n/// @dev An ERC-20 contract must be set by a project's owner for ERC-20 claiming to become available. Projects can bring\n/// their own IJBToken if they prefer.\ncontract JBTokens is JBControlled, IJBTokens {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBTokens_EmptyName();\n error JBTokens_EmptySymbol();\n error JBTokens_EmptyToken();\n error JBTokens_InsufficientCredits(uint256 count, uint256 creditBalance);\n error JBTokens_InsufficientTokensToBurn(uint256 count, uint256 tokenBalance);\n error JBTokens_OverflowAlert(uint256 value, uint256 limit);\n error JBTokens_ProjectAlreadyHasToken(IJBToken token);\n error JBTokens_RecipientZeroAddress();\n error JBTokens_TokenAlreadyBeingUsed(uint256 projectId);\n error JBTokens_TokenNotFound();\n error JBTokens_TokensMustHave18Decimals(uint256 decimals);\n\n //*********************************************************************//\n // --------------- public immutable stored properties ---------------- //\n //*********************************************************************//\n\n /// @notice A reference to the token implementation that'll be cloned as projects deploy their own tokens.\n IJBToken public immutable TOKEN;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice Each holder's credit balance for each project.\n /// @custom:param holder The credit holder.\n /// @custom:param projectId The ID of the project to which the credits belong.\n mapping(address holder => mapping(uint256 projectId => uint256)) public override creditBalanceOf;\n\n /// @notice Each token's project.\n /// @custom:param token The address of the token associated with the project.\n // slither-disable-next-line unused-return\n mapping(IJBToken token => uint256) public override projectIdOf;\n\n /// @notice Each project's attached token contract.\n /// @custom:param projectId The ID of the project the token belongs to.\n mapping(uint256 projectId => IJBToken) public override tokenOf;\n\n /// @notice The total supply of credits for each project.\n /// @custom:param projectId The ID of the project to which the credits belong.\n mapping(uint256 projectId => uint256) public override totalCreditSupplyOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n /// @param token The implementation of the token contract that project can deploy.\n constructor(IJBDirectory directory, IJBToken token) JBControlled(directory) {\n TOKEN = token;\n }\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice The total balance a holder has for a specified project, including both tokens and token credits.\n /// @param holder The holder to get a balance for.\n /// @param projectId The project to get the `_holder`s balance for.\n /// @return balance The combined token and token credit balance of the `_holder\n function totalBalanceOf(address holder, uint256 projectId) external view override returns (uint256 balance) {\n // Get a reference to the holder's credits for the project.\n balance = creditBalanceOf[holder][projectId];\n\n // Get a reference to the project's current token.\n IJBToken token = tokenOf[projectId];\n\n // If the project has a current token, add the holder's balance to the total.\n if (token != IJBToken(address(0))) {\n balance += token.balanceOf(holder);\n }\n }\n\n //*********************************************************************//\n // --------------------------- public views -------------------------- //\n //*********************************************************************//\n\n /// @notice The total supply for a specific project, including both tokens and token credits.\n /// @param projectId The ID of the project to get the total supply of.\n /// @return totalSupply The total supply of the project's tokens and token credits.\n function totalSupplyOf(uint256 projectId) public view override returns (uint256 totalSupply) {\n // Get a reference to the total supply of the project's credits\n totalSupply = totalCreditSupplyOf[projectId];\n\n // Get a reference to the project's current token.\n IJBToken token = tokenOf[projectId];\n\n // If the project has a current token, add its total supply to the total.\n if (token != IJBToken(address(0))) {\n totalSupply += token.totalSupply();\n }\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Burns (destroys) credits or tokens.\n /// @dev Credits are burned first, then tokens are burned.\n /// @dev Only a project's current controller can burn its tokens.\n /// @param holder The address that owns the tokens which are being burned.\n /// @param projectId The ID of the project to the burned tokens belong to.\n /// @param count The number of tokens to burn.\n function burnFrom(address holder, uint256 projectId, uint256 count) external override onlyControllerOf(projectId) {\n // Get a reference to the project's current token.\n IJBToken token = tokenOf[projectId];\n\n // Get a reference to the amount of credits the holder has.\n uint256 creditBalance = creditBalanceOf[holder][projectId];\n\n // Get a reference to the amount of the project's current token the holder has in their wallet.\n uint256 tokenBalance = token == IJBToken(address(0)) ? 0 : token.balanceOf(holder);\n\n // There must be enough tokens to burn across the holder's combined token and credit balance.\n if (count > tokenBalance + creditBalance) {\n revert JBTokens_InsufficientTokensToBurn(count, tokenBalance + creditBalance);\n }\n\n // The amount of tokens to burn.\n uint256 tokensToBurn;\n\n // Get a reference to how many tokens should be burned\n if (tokenBalance != 0) {\n // Burn credits before tokens.\n unchecked {\n tokensToBurn = creditBalance < count ? count - creditBalance : 0;\n }\n }\n\n // The amount of credits to burn.\n uint256 creditsToBurn;\n unchecked {\n creditsToBurn = count - tokensToBurn;\n }\n\n // Subtract the burned credits from the credit balance and credit supply.\n if (creditsToBurn > 0) {\n creditBalanceOf[holder][projectId] = creditBalanceOf[holder][projectId] - creditsToBurn;\n totalCreditSupplyOf[projectId] = totalCreditSupplyOf[projectId] - creditsToBurn;\n }\n\n emit Burn({\n holder: holder,\n projectId: projectId,\n count: count,\n creditBalance: creditBalance,\n tokenBalance: tokenBalance,\n caller: msg.sender\n });\n\n // Burn the tokens.\n if (tokensToBurn > 0) token.burn(holder, tokensToBurn);\n }\n\n /// @notice Redeem credits to claim tokens into a holder's wallet.\n /// @dev Only a project's controller can claim that project's tokens.\n /// @param holder The owner of the credits being redeemed.\n /// @param projectId The ID of the project whose tokens are being claimed.\n /// @param count The number of tokens to claim.\n /// @param beneficiary The account into which the claimed tokens will go.\n function claimTokensFor(\n address holder,\n uint256 projectId,\n uint256 count,\n address beneficiary\n )\n external\n override\n onlyControllerOf(projectId)\n {\n // Get a reference to the project's current token.\n IJBToken token = tokenOf[projectId];\n\n // The project must have a token contract attached.\n if (token == IJBToken(address(0))) revert JBTokens_TokenNotFound();\n\n // Get a reference to the amount of credits the holder has.\n uint256 creditBalance = creditBalanceOf[holder][projectId];\n\n // There must be enough credits to claim.\n if (count > creditBalance) revert JBTokens_InsufficientCredits(count, creditBalance);\n\n unchecked {\n // Subtract the claim amount from the holder's credit balance.\n creditBalanceOf[holder][projectId] = creditBalance - count;\n\n // Subtract the claim amount from the project's total credit supply.\n totalCreditSupplyOf[projectId] -= count;\n }\n\n emit ClaimTokens({\n holder: holder,\n projectId: projectId,\n creditBalance: creditBalance,\n count: count,\n beneficiary: beneficiary,\n caller: msg.sender\n });\n\n // Mint the equivalent amount of the project's token for the holder.\n token.mint(beneficiary, count);\n }\n\n /// @notice Deploys an ERC-20 token for a project. It will be used when claiming tokens.\n /// @dev Deploys a project's ERC-20 token contract.\n /// @dev Only a project's controller can deploy its token.\n /// @param projectId The ID of the project to deploy an ERC-20 token for.\n /// @param name The ERC-20's name.\n /// @param symbol The ERC-20's symbol.\n /// @param salt The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based\n /// on `msg.sender` and the `TOKEN` implementation address.\n /// @return token The address of the token that was deployed.\n function deployERC20For(\n uint256 projectId,\n string calldata name,\n string calldata symbol,\n bytes32 salt\n )\n external\n override\n onlyControllerOf(projectId)\n returns (IJBToken token)\n {\n // There must be a name.\n if (bytes(name).length == 0) revert JBTokens_EmptyName();\n\n // There must be a symbol.\n if (bytes(symbol).length == 0) revert JBTokens_EmptySymbol();\n\n // The project shouldn't already have a token.\n if (tokenOf[projectId] != IJBToken(address(0))) revert JBTokens_ProjectAlreadyHasToken(tokenOf[projectId]);\n\n token = salt == bytes32(0)\n ? IJBToken(Clones.clone(address(TOKEN)))\n : IJBToken(Clones.cloneDeterministic(address(TOKEN), keccak256(abi.encode(msg.sender, salt))));\n\n // Store the token contract.\n tokenOf[projectId] = token;\n\n // Store the project for the token.\n projectIdOf[token] = projectId;\n\n emit DeployERC20({\n projectId: projectId,\n token: token,\n name: name,\n symbol: symbol,\n salt: salt,\n caller: msg.sender\n });\n\n // Initialize the token.\n token.initialize({name: name, symbol: symbol, owner: address(this)});\n }\n\n /// @notice Mint (create) new tokens or credits.\n /// @dev Only a project's current controller can mint its tokens.\n /// @param holder The address receiving the new tokens.\n /// @param projectId The ID of the project to which the tokens belong.\n /// @param count The number of tokens to mint.\n function mintFor(address holder, uint256 projectId, uint256 count) external override onlyControllerOf(projectId) {\n // Get a reference to the project's current token.\n IJBToken token = tokenOf[projectId];\n\n // Save a reference to whether there a token exists.\n bool shouldClaimTokens = token != IJBToken(address(0));\n\n if (shouldClaimTokens) {\n // If tokens should be claimed, mint tokens into the holder's wallet.\n // slither-disable-next-line reentrancy-events\n token.mint(holder, count);\n } else {\n // Otherwise, add the tokens to their credits and the credit supply.\n creditBalanceOf[holder][projectId] += count;\n totalCreditSupplyOf[projectId] += count;\n }\n\n // The total supply can't exceed the maximum value storable in a uint208.\n if (totalSupplyOf(projectId) > type(uint208).max) {\n revert JBTokens_OverflowAlert(totalSupplyOf(projectId), type(uint208).max);\n }\n\n emit Mint({\n holder: holder,\n projectId: projectId,\n count: count,\n shouldClaimTokens: shouldClaimTokens,\n caller: msg.sender\n });\n }\n\n /// @notice Set a project's token if not already set.\n /// @dev Only a project's controller can set its token.\n /// @param projectId The ID of the project to set the token of.\n /// @param token The new token's address.\n function setTokenFor(uint256 projectId, IJBToken token) external override onlyControllerOf(projectId) {\n // Can't set to the zero address.\n if (token == IJBToken(address(0))) revert JBTokens_EmptyToken();\n\n // Can't set a token if the project is already associated with another token.\n if (tokenOf[projectId] != IJBToken(address(0))) revert JBTokens_ProjectAlreadyHasToken(tokenOf[projectId]);\n\n // Can't set a token if it's already associated with another project.\n if (projectIdOf[token] != 0) revert JBTokens_TokenAlreadyBeingUsed(projectIdOf[token]);\n\n // Can't change to a token that doesn't use 18 decimals.\n if (token.decimals() != 18) revert JBTokens_TokensMustHave18Decimals(token.decimals());\n\n // Store the new token.\n tokenOf[projectId] = token;\n\n // Store the project for the token.\n projectIdOf[token] = projectId;\n\n emit SetToken({projectId: projectId, token: token, caller: msg.sender});\n }\n\n /// @notice Allows a holder to transfer credits to another account.\n /// @dev Only a project's controller can transfer credits for that project.\n /// @param holder The address to transfer credits from.\n /// @param projectId The ID of the project whose credits are being transferred.\n /// @param recipient The recipient of the credits.\n /// @param count The number of token credits to transfer.\n function transferCreditsFrom(\n address holder,\n uint256 projectId,\n address recipient,\n uint256 count\n )\n external\n override\n onlyControllerOf(projectId)\n {\n // Can't transfer to the zero address.\n if (recipient == address(0)) revert JBTokens_RecipientZeroAddress();\n\n // Get a reference to the holder's unclaimed project token balance.\n uint256 creditBalance = creditBalanceOf[holder][projectId];\n\n // The holder must have enough unclaimed tokens to transfer.\n if (count > creditBalance) revert JBTokens_InsufficientCredits(count, creditBalance);\n\n // Subtract from the holder's unclaimed token balance.\n unchecked {\n creditBalanceOf[holder][projectId] = creditBalance - count;\n }\n\n // Add the unclaimed project tokens to the recipient's balance.\n creditBalanceOf[recipient][projectId] += count;\n\n emit TransferCredits({\n holder: holder,\n projectId: projectId,\n recipient: recipient,\n count: count,\n caller: msg.sender\n });\n }\n}\n" + }, + "src/interfaces/IJBTokens.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBToken} from \"./IJBToken.sol\";\n\ninterface IJBTokens {\n event DeployERC20(\n uint256 indexed projectId, IJBToken indexed token, string name, string symbol, bytes32 salt, address caller\n );\n event Burn(\n address indexed holder,\n uint256 indexed projectId,\n uint256 count,\n uint256 creditBalance,\n uint256 tokenBalance,\n address caller\n );\n event ClaimTokens(\n address indexed holder,\n uint256 indexed projectId,\n uint256 creditBalance,\n uint256 count,\n address beneficiary,\n address caller\n );\n event Mint(\n address indexed holder, uint256 indexed projectId, uint256 count, bool shouldClaimTokens, address caller\n );\n event SetToken(uint256 indexed projectId, IJBToken indexed token, address caller);\n event TransferCredits(\n address indexed holder, uint256 indexed projectId, address indexed recipient, uint256 count, address caller\n );\n\n function creditBalanceOf(address holder, uint256 projectId) external view returns (uint256);\n function projectIdOf(IJBToken token) external view returns (uint256);\n function tokenOf(uint256 projectId) external view returns (IJBToken);\n function totalCreditSupplyOf(uint256 projectId) external view returns (uint256);\n\n function totalBalanceOf(address holder, uint256 projectId) external view returns (uint256 result);\n function totalSupplyOf(uint256 projectId) external view returns (uint256);\n\n function burnFrom(address holder, uint256 projectId, uint256 count) external;\n function claimTokensFor(address holder, uint256 projectId, uint256 count, address beneficiary) external;\n function deployERC20For(\n uint256 projectId,\n string calldata name,\n string calldata symbol,\n bytes32 salt\n )\n external\n returns (IJBToken token);\n function mintFor(address holder, uint256 projectId, uint256 count) external;\n function setTokenFor(uint256 projectId, IJBToken token) external;\n function transferCreditsFrom(address holder, uint256 projectId, address recipient, uint256 count) external;\n}\n" + }, + "src/JBFundAccessLimits.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBControlled} from \"./abstract/JBControlled.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBFundAccessLimits} from \"./interfaces/IJBFundAccessLimits.sol\";\nimport {JBCurrencyAmount} from \"./structs/JBCurrencyAmount.sol\";\nimport {JBFundAccessLimitGroup} from \"./structs/JBFundAccessLimitGroup.sol\";\n\n/// @notice Stores and manages terminal fund access limits for each project.\n/// @dev See the `JBFundAccessLimitGroup` struct to learn about payout limits and surplus allowances.\ncontract JBFundAccessLimits is JBControlled, IJBFundAccessLimits {\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering();\n error JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering();\n\n //*********************************************************************//\n // --------------------- internal stored properties ------------------ //\n //*********************************************************************//\n\n /// @notice An array of packed payout limits for a given project, ruleset, terminal, and token.\n /// @dev bits 0-223: The maximum amount (in a specific currency) of the terminal's `token`s that the project can pay\n /// out during the ruleset.\n /// @dev bits 224-255: The currency that the payout limit is denominated in. If this currency is different from the\n /// terminal's `token`, the payout limit will vary depending on their exchange rate.\n /// @custom:param projectId The project's ID.\n /// @custom:param rulesetId The ruleset's ID.\n /// @custom:param terminal The terminal to get the payout limits of.\n /// @custom:param token The token to get the payout limits of.\n mapping(\n uint256 projectId\n => mapping(uint256 rulesetId => mapping(address terminal => mapping(address token => uint256[])))\n ) internal _packedPayoutLimitsDataOf;\n\n /// @notice An array of packed surplus allowances for a given project, ruleset, terminal, and token.\n /// @dev bits 0-223: The maximum amount (in a specific currency) of the terminal's `token`s that the project can\n /// access from its surplus during the ruleset.\n /// @dev bits 224-255: The currency that the surplus allowance is denominated in. If this currency is different from\n /// the terminal's `token`, the surplus allowance will vary depending on their exchange rate.\n /// @custom:param projectId The project's ID.\n /// @custom:param rulesetId The ruleset's ID.\n /// @custom:param terminal The terminal to get the surplus allowances of.\n /// @custom:param token The token to get the surplus allowances of.\n mapping(\n uint256 projectId\n => mapping(uint256 rulesetId => mapping(address terminal => mapping(address token => uint256[])))\n ) internal _packedSurplusAllowancesDataOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing the terminals and the controller used by each project.\n // solhint-disable-next-line no-empty-blocks\n constructor(IJBDirectory directory) JBControlled(directory) {}\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice A project's payout limit for a given ruleset, terminal, token, and currency.\n /// @dev The fixed point return amount will use the same number of decimals as the `terminal`.\n /// @param projectId The project's ID.\n /// @param rulesetId The ruleset's ID.\n /// @param terminal The terminal the payout limit applies to.\n /// @param token The token the payout limit applies to.\n /// @param currency The currency the payout limit is denominated in.\n /// @return payoutLimit The payout limit, as a fixed point number with the same number of decimals as the provided\n /// terminal.\n function payoutLimitOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token,\n uint256 currency\n )\n external\n view\n override\n returns (uint256 payoutLimit)\n {\n // Get a reference to the packed payout limits.\n uint256[] memory data = _packedPayoutLimitsDataOf[projectId][rulesetId][terminal][token];\n\n // Get a reference to the number of payout limits.\n uint256 numberOfData = data.length;\n\n // Iterate through the stored packed values and return the value of the matching currency.\n for (uint256 i; i < numberOfData; i++) {\n // Set the data being iterated on.\n uint256 packedPayoutLimitData = data[i];\n\n // If the currencies match, return the value.\n if (currency == packedPayoutLimitData >> 224) {\n return uint256(uint224(packedPayoutLimitData));\n }\n }\n }\n\n /// @notice A project's payout limits for a given ruleset, terminal, and token.\n /// @notice The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated\n /// by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\n /// @dev The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\n /// @param projectId The project's ID.\n /// @param rulesetId The ruleset's ID.\n /// @param terminal The terminal the payout limits apply to.\n /// @param token The token the payout limits apply to.\n /// @return payoutLimits The payout limits.\n function payoutLimitsOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token\n )\n external\n view\n override\n returns (JBCurrencyAmount[] memory payoutLimits)\n {\n // Get a reference to the packed payout limits.\n uint256[] memory packedPayoutLimitsData = _packedPayoutLimitsDataOf[projectId][rulesetId][terminal][token];\n\n // Get a reference to the number of payout limits.\n uint256 numberOfData = packedPayoutLimitsData.length;\n\n // Initialize the return array.\n payoutLimits = new JBCurrencyAmount[](numberOfData);\n\n // Iterate through the packed values and format the returned value.\n for (uint256 i; i < numberOfData; i++) {\n // Set the data being iterated on.\n uint256 packedPayoutLimitData = packedPayoutLimitsData[i];\n\n // The limit amount is in bits 0-231. The currency is in bits 224-255.\n payoutLimits[i] = JBCurrencyAmount({\n currency: uint32(packedPayoutLimitData >> 224),\n amount: uint224(packedPayoutLimitData)\n });\n }\n }\n\n /// @notice A project's surplus allowance for a given ruleset, terminal, token, and currency.\n /// @dev The fixed point return amount will use the same number of decimals as the `terminal`.\n /// @param projectId The project's ID.\n /// @param rulesetId The ruleset's ID.\n /// @param terminal The terminal the surplus allowance applies to.\n /// @param token The token the surplus allowance applies to.\n /// @param currency The currency that the surplus allowance is denominated in.\n /// @return surplusAllowance The surplus allowance, as a fixed point number with the same number of decimals as the\n /// provided terminal.\n function surplusAllowanceOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token,\n uint256 currency\n )\n external\n view\n override\n returns (uint256 surplusAllowance)\n {\n // Get a reference to the packed surplus allowances.\n uint256[] memory packedSurplusAllowancesData =\n _packedSurplusAllowancesDataOf[projectId][rulesetId][terminal][token];\n\n // Get a reference to the number of surplus allowances.\n uint256 numberOfData = packedSurplusAllowancesData.length;\n\n // Iterate through the stored packed values and format the returned value.\n for (uint256 i; i < numberOfData; i++) {\n // Set the data being iterated on.\n uint256 packedSurplusAllowanceData = packedSurplusAllowancesData[i];\n\n // If the currencies match, return the value.\n if (currency == packedSurplusAllowanceData >> 224) {\n return uint256(uint224(packedSurplusAllowanceData));\n }\n }\n }\n\n /// @notice A project's surplus allowances for a given ruleset, terminal, and token.\n /// @notice The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset\n /// is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a\n /// currency.\n /// @dev The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\n /// @param projectId The project's ID.\n /// @param rulesetId The ruleset's ID.\n /// @param terminal The terminal the surplus allowances apply to.\n /// @param token The token the surplus allowances apply to.\n /// @return surplusAllowances The surplus allowances.\n function surplusAllowancesOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token\n )\n external\n view\n override\n returns (JBCurrencyAmount[] memory surplusAllowances)\n {\n // Get a reference to the packed surplus allowances.\n uint256[] memory packedSurplusAllowancesData =\n _packedSurplusAllowancesDataOf[projectId][rulesetId][terminal][token];\n\n // Get a reference to the number of surplus allowances.\n uint256 numberOfData = packedSurplusAllowancesData.length;\n\n // Initialize the return array.\n surplusAllowances = new JBCurrencyAmount[](numberOfData);\n\n // Iterate through the stored packed values and format the returned value.\n for (uint256 i; i < numberOfData; i++) {\n // Set the data being iterated on.\n uint256 packedSurplusAllowanceData = packedSurplusAllowancesData[i];\n\n // The limit is in bits 0-223. The currency is in bits 224-255.\n surplusAllowances[i] = JBCurrencyAmount({\n currency: uint32(packedSurplusAllowanceData >> 224),\n amount: uint224(packedSurplusAllowanceData)\n });\n }\n }\n\n //*********************************************************************//\n // --------------------- external transactions ----------------------- //\n //*********************************************************************//\n\n /// @notice Sets limits on the amount of funds a project can access from its terminals during a ruleset.\n /// @dev Only a project's controller can set its fund access limits.\n /// @dev Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to\n /// prevent duplicates.\n /// @param projectId The ID of the project whose fund access limits are being set.\n /// @param rulesetId The ID of the ruleset that the limits will apply within.\n /// @param fundAccessLimitGroups An array containing payout limits and surplus allowances for each payment terminal.\n /// Amounts are fixed point numbers using the same number of decimals as the associated terminal.\n function setFundAccessLimitsFor(\n uint256 projectId,\n uint256 rulesetId,\n JBFundAccessLimitGroup[] calldata fundAccessLimitGroups\n )\n external\n override\n onlyControllerOf(projectId)\n {\n // Save the number of fund access limit groups.\n uint256 numberOfFundAccessLimitGroups = fundAccessLimitGroups.length;\n\n // Set payout limits if there are any.\n for (uint256 i; i < numberOfFundAccessLimitGroups; i++) {\n // Set the limits being iterated on.\n JBFundAccessLimitGroup calldata fundAccessLimitGroup = fundAccessLimitGroups[i];\n\n // Keep a reference to the number of payout limits.\n uint256 numberOfPayoutLimits = fundAccessLimitGroup.payoutLimits.length;\n\n // Iterate through each payout limit to validate and store them.\n for (uint256 j; j < numberOfPayoutLimits; j++) {\n // Set the payout limit being iterated on.\n JBCurrencyAmount calldata payoutLimit = fundAccessLimitGroup.payoutLimits[j];\n\n // Make sure the payout limits are passed in strictly increasing order (sorted by currency) to prevent\n // duplicates.\n if (j != 0 && payoutLimit.currency <= fundAccessLimitGroup.payoutLimits[j - 1].currency) {\n revert JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering();\n }\n\n // Set the payout limit if there is one.\n if (payoutLimit.amount > 0) {\n _packedPayoutLimitsDataOf[projectId][rulesetId][fundAccessLimitGroup.terminal][fundAccessLimitGroup\n .token].push(uint256(payoutLimit.amount) | (uint256(payoutLimit.currency) << 224));\n }\n }\n\n // Keep a reference to the number of surplus allowances.\n uint256 numberOfSurplusAllowances = fundAccessLimitGroup.surplusAllowances.length;\n\n // Iterate through each surplus allowance to validate and store them.\n for (uint256 j; j < numberOfSurplusAllowances; j++) {\n // Set the payout limit being iterated on.\n JBCurrencyAmount calldata surplusAllowance = fundAccessLimitGroup.surplusAllowances[j];\n\n // Make sure the surplus allowances are passed in strictly increasing order (sorted by currency) to\n // prevent duplicates.\n if (j != 0 && surplusAllowance.currency <= fundAccessLimitGroup.surplusAllowances[j - 1].currency) {\n revert JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering();\n }\n\n // Set the surplus allowance if there is one.\n if (surplusAllowance.amount > 0) {\n _packedSurplusAllowancesDataOf[projectId][rulesetId][fundAccessLimitGroup.terminal][fundAccessLimitGroup\n .token].push(uint256(surplusAllowance.amount) | (uint256(surplusAllowance.currency) << 224));\n }\n }\n\n emit SetFundAccessLimits({\n rulesetId: rulesetId,\n projectId: projectId,\n fundAccessLimitGroup: fundAccessLimitGroup,\n caller: msg.sender\n });\n }\n }\n}\n" + }, + "src/interfaces/IJBFundAccessLimits.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBCurrencyAmount} from \"./../structs/JBCurrencyAmount.sol\";\nimport {JBFundAccessLimitGroup} from \"./../structs/JBFundAccessLimitGroup.sol\";\n\ninterface IJBFundAccessLimits {\n event SetFundAccessLimits(\n uint256 indexed rulesetId,\n uint256 indexed projectId,\n JBFundAccessLimitGroup fundAccessLimitGroup,\n address caller\n );\n\n function payoutLimitOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token,\n uint256 currency\n )\n external\n view\n returns (uint256 payoutLimit);\n function payoutLimitsOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token\n )\n external\n view\n returns (JBCurrencyAmount[] memory payoutLimits);\n function surplusAllowanceOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token,\n uint256 currency\n )\n external\n view\n returns (uint256 surplusAllowance);\n function surplusAllowancesOf(\n uint256 projectId,\n uint256 rulesetId,\n address terminal,\n address token\n )\n external\n view\n returns (JBCurrencyAmount[] memory surplusAllowances);\n\n function setFundAccessLimitsFor(\n uint256 projectId,\n uint256 rulesetId,\n JBFundAccessLimitGroup[] memory fundAccessLimitGroups\n )\n external;\n}\n" + }, + "src/structs/JBCurrencyAmount.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member amount The amount of the currency.\n/// @custom:member currency The currency. By convention, this is `uint32(uint160(tokenAddress))` for tokens, or a\n/// constant ID from e.g. `JBCurrencyIds` for other currencies.\nstruct JBCurrencyAmount {\n uint224 amount;\n uint32 currency;\n}\n" + }, + "src/structs/JBFundAccessLimitGroup.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBCurrencyAmount} from \"./JBCurrencyAmount.sol\";\n\n/// @dev Payout limit example: if the `amount` is 5, the `currency` is 1 (USD), and the terminal's token is ETH, then\n/// the project can pay out 5 USD worth of ETH during a ruleset.\n/// @dev Surplus allowance example: if the `amount` is 5, the `currency` is 1 (USD), and the terminal's token is ETH,\n/// then the project can pay out 5 USD worth of ETH from its surplus during a ruleset. A project's surplus is its\n/// balance minus its current combined payout limit.\n/// @dev If a project has multiple payout limits or surplus allowances, they are all available. They can all be used\n/// during a single ruleset.\n/// @dev The payout limits' and surplus allowances' fixed point amounts have the same number of decimals as the\n/// terminal.\n/// @custom:member terminal The terminal that the payout limits and surplus allowances apply to.\n/// @custom:member token The token that the payout limits and surplus allowances apply to within the `terminal`.\n/// @custom:member payoutLimits An array of payout limits. The payout limits cumulatively dictate the maximum value of\n/// `token`s a project can pay out from its balance in a terminal during a ruleset. Each payout limit can have a unique\n/// currency and amount.\n/// @custom:member surplusAllowances An array of surplus allowances. The surplus allowances cumulatively dictates the\n/// maximum value of `token`s a project can pay out from its surplus (balance less payouts) in a terminal during a\n/// ruleset. Each surplus allowance can have a unique currency and amount.\nstruct JBFundAccessLimitGroup {\n address terminal;\n address token;\n JBCurrencyAmount[] payoutLimits;\n JBCurrencyAmount[] surplusAllowances;\n}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n" + }, + "node_modules/@openzeppelin/contracts/interfaces/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n" + }, + "node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (metatx/ERC2771Context.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Context variant with ERC-2771 support.\n *\n * WARNING: Avoid using this pattern in contracts that rely in a specific calldata length as they'll\n * be affected by any forwarder whose `msg.data` is suffixed with the `from` address according to the ERC-2771\n * specification adding the address size in bytes (20) to the calldata size. An example of an unexpected\n * behavior could be an unintended fallback (or another function) invocation while trying to invoke the `receive`\n * function only accessible if `msg.data.length == 0`.\n *\n * WARNING: The usage of `delegatecall` in this contract is dangerous and may result in context corruption.\n * Any forwarded request to this contract triggering a `delegatecall` to itself will result in an invalid {_msgSender}\n * recovery.\n */\nabstract contract ERC2771Context is Context {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable _trustedForwarder;\n\n /**\n * @dev Initializes the contract with a trusted forwarder, which will be able to\n * invoke functions on this contract on behalf of other accounts.\n *\n * NOTE: The trusted forwarder can be replaced by overriding {trustedForwarder}.\n */\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor(address trustedForwarder_) {\n _trustedForwarder = trustedForwarder_;\n }\n\n /**\n * @dev Returns the address of the trusted forwarder.\n */\n function trustedForwarder() public view virtual returns (address) {\n return _trustedForwarder;\n }\n\n /**\n * @dev Indicates whether any particular address is the trusted forwarder.\n */\n function isTrustedForwarder(address forwarder) public view virtual returns (bool) {\n return forwarder == trustedForwarder();\n }\n\n /**\n * @dev Override for `msg.sender`. Defaults to the original `msg.sender` whenever\n * a call is not performed by the trusted forwarder or the calldata length is less than\n * 20 bytes (an address length).\n */\n function _msgSender() internal view virtual override returns (address) {\n uint256 calldataLength = msg.data.length;\n uint256 contextSuffixLength = _contextSuffixLength();\n if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) {\n return address(bytes20(msg.data[calldataLength - contextSuffixLength:]));\n } else {\n return super._msgSender();\n }\n }\n\n /**\n * @dev Override for `msg.data`. Defaults to the original `msg.data` whenever\n * a call is not performed by the trusted forwarder or the calldata length is less than\n * 20 bytes (an address length).\n */\n function _msgData() internal view virtual override returns (bytes calldata) {\n uint256 calldataLength = msg.data.length;\n uint256 contextSuffixLength = _contextSuffixLength();\n if (isTrustedForwarder(msg.sender) && calldataLength >= contextSuffixLength) {\n return msg.data[:calldataLength - contextSuffixLength];\n } else {\n return super._msgData();\n }\n }\n\n /**\n * @dev ERC-2771 specifies the context as being a single address (20 bytes).\n */\n function _contextSuffixLength() internal view virtual override returns (uint256) {\n return 20;\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n // bubble errors\n if iszero(success) {\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n revert(ptr, returndatasize())\n }\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n\n if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n }\n}\n" + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\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.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert Errors.FailedCall();\n }\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 or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\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 function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\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 function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) 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 assembly (\"memory-safe\") {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n" + }, + "src/JBController.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBPermissionIds} from \"@bananapus/permission-ids/src/JBPermissionIds.sol\";\nimport {ERC2771Context} from \"@openzeppelin/contracts/metatx/ERC2771Context.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {JBPermissioned} from \"./abstract/JBPermissioned.sol\";\nimport {JBApprovalStatus} from \"./enums/JBApprovalStatus.sol\";\nimport {IJBController} from \"./interfaces/IJBController.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBDirectoryAccessControl} from \"./interfaces/IJBDirectoryAccessControl.sol\";\nimport {IJBFundAccessLimits} from \"./interfaces/IJBFundAccessLimits.sol\";\nimport {IJBMigratable} from \"./interfaces/IJBMigratable.sol\";\nimport {IJBPermissioned} from \"./interfaces/IJBPermissioned.sol\";\nimport {IJBPermissions} from \"./interfaces/IJBPermissions.sol\";\nimport {IJBPriceFeed} from \"./interfaces/IJBPriceFeed.sol\";\nimport {IJBPrices} from \"./interfaces/IJBPrices.sol\";\nimport {IJBProjects} from \"./interfaces/IJBProjects.sol\";\nimport {IJBProjectUriRegistry} from \"./interfaces/IJBProjectUriRegistry.sol\";\nimport {IJBRulesetDataHook} from \"./interfaces/IJBRulesetDataHook.sol\";\nimport {IJBRulesets} from \"./interfaces/IJBRulesets.sol\";\nimport {IJBSplitHook} from \"./interfaces/IJBSplitHook.sol\";\nimport {IJBSplits} from \"./interfaces/IJBSplits.sol\";\nimport {IJBTerminal} from \"./interfaces/IJBTerminal.sol\";\nimport {IJBToken} from \"./interfaces/IJBToken.sol\";\nimport {IJBTokens} from \"./interfaces/IJBTokens.sol\";\nimport {JBConstants} from \"./libraries/JBConstants.sol\";\nimport {JBRulesetMetadataResolver} from \"./libraries/JBRulesetMetadataResolver.sol\";\nimport {JBSplitGroupIds} from \"./libraries/JBSplitGroupIds.sol\";\nimport {JBRuleset} from \"./structs/JBRuleset.sol\";\nimport {JBRulesetConfig} from \"./structs/JBRulesetConfig.sol\";\nimport {JBRulesetMetadata} from \"./structs/JBRulesetMetadata.sol\";\nimport {JBRulesetWithMetadata} from \"./structs/JBRulesetWithMetadata.sol\";\nimport {JBSplit} from \"./structs/JBSplit.sol\";\nimport {JBSplitGroup} from \"./structs/JBSplitGroup.sol\";\nimport {JBSplitHookContext} from \"./structs/JBSplitHookContext.sol\";\nimport {JBTerminalConfig} from \"./structs/JBTerminalConfig.sol\";\n\n/// @notice `JBController` coordinates rulesets and project tokens, and is the entry point for most operations related\n/// to rulesets and project tokens.\ncontract JBController is JBPermissioned, ERC2771Context, IJBController, IJBMigratable {\n // A library that parses packed ruleset metadata into a friendlier format.\n using JBRulesetMetadataResolver for JBRuleset;\n\n // A library that adds default safety checks to ERC20 functionality.\n using SafeERC20 for IERC20;\n\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBController_AddingPriceFeedNotAllowed();\n error JBController_CreditTransfersPaused();\n error JBController_InvalidCashOutTaxRate(uint256 rate, uint256 limit);\n error JBController_InvalidReservedPercent(uint256 percent, uint256 limit);\n error JBController_MintNotAllowedAndNotTerminalOrHook();\n error JBController_NoReservedTokens();\n error JBController_OnlyFromTargetTerminal(address sender, address targetTerminal);\n error JBController_OnlyDirectory(address sender, IJBDirectory directory);\n error JBController_RulesetsAlreadyLaunched();\n error JBController_RulesetsArrayEmpty();\n error JBController_RulesetSetTokenNotAllowed();\n error JBController_ZeroTokensToBurn();\n error JBController_ZeroTokensToMint();\n\n //*********************************************************************//\n // --------------- public immutable stored properties ---------------- //\n //*********************************************************************//\n\n /// @notice The directory of terminals and controllers for projects.\n IJBDirectory public immutable override DIRECTORY;\n\n /// @notice A contract that stores fund access limits for each project.\n IJBFundAccessLimits public immutable override FUND_ACCESS_LIMITS;\n\n /// @notice A contract that stores prices for each project.\n IJBPrices public immutable override PRICES;\n\n /// @notice Mints ERC-721s that represent project ownership and transfers.\n IJBProjects public immutable override PROJECTS;\n\n /// @notice The contract storing and managing project rulesets.\n IJBRulesets public immutable override RULESETS;\n\n /// @notice The contract that stores splits for each project.\n IJBSplits public immutable override SPLITS;\n\n /// @notice The contract that manages token minting and burning.\n IJBTokens public immutable override TOKENS;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the\n /// reserved token split group yet).\n /// @custom:param projectId The ID of the project to get the pending reserved token balance of.\n mapping(uint256 projectId => uint256) public override pendingReservedTokenBalanceOf;\n\n /// @notice The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\n /// @custom:param projectId The ID of the project to get the metadata URI of.\n mapping(uint256 projectId => string) public override uriOf;\n\n //*********************************************************************//\n // ---------------------------- constructor -------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n /// @param fundAccessLimits A contract that stores fund access limits for each project.\n /// @param permissions A contract storing permissions.\n /// @param prices A contract that stores prices for each project.\n /// @param projects A contract which mints ERC-721s that represent project ownership and transfers.\n /// @param rulesets A contract storing and managing project rulesets.\n /// @param splits A contract that stores splits for each project.\n /// @param tokens A contract that manages token minting and burning.\n constructor(\n IJBDirectory directory,\n IJBFundAccessLimits fundAccessLimits,\n IJBPermissions permissions,\n IJBPrices prices,\n IJBProjects projects,\n IJBRulesets rulesets,\n IJBSplits splits,\n IJBTokens tokens,\n address trustedForwarder\n )\n JBPermissioned(permissions)\n ERC2771Context(trustedForwarder)\n {\n DIRECTORY = directory;\n FUND_ACCESS_LIMITS = fundAccessLimits;\n PRICES = prices;\n PROJECTS = projects;\n RULESETS = rulesets;\n SPLITS = splits;\n TOKENS = tokens;\n }\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to\n /// earliest.\n /// @param projectId The ID of the project to get the rulesets of.\n /// @param startingId The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the\n /// `startingId` is 0, passed, the project's latest ruleset will be used.\n /// @param size The maximum number of rulesets to return.\n /// @return rulesets The array of rulesets with their metadata.\n function allRulesetsOf(\n uint256 projectId,\n uint256 startingId,\n uint256 size\n )\n external\n view\n override\n returns (JBRulesetWithMetadata[] memory rulesets)\n {\n // Get the rulesets (without metadata).\n JBRuleset[] memory baseRulesets = RULESETS.allOf(projectId, startingId, size);\n\n // Keep a reference to the number of rulesets.\n uint256 numberOfRulesets = baseRulesets.length;\n\n // Initialize the array being returned.\n rulesets = new JBRulesetWithMetadata[](numberOfRulesets);\n\n // Populate the array with rulesets AND their metadata.\n for (uint256 i; i < numberOfRulesets; i++) {\n // Set the ruleset being iterated on.\n JBRuleset memory baseRuleset = baseRulesets[i];\n\n // Set the returned value.\n rulesets[i] = JBRulesetWithMetadata({ruleset: baseRuleset, metadata: baseRuleset.expandMetadata()});\n }\n }\n\n /// @notice A project's currently active ruleset and its metadata.\n /// @param projectId The ID of the project to get the current ruleset of.\n /// @return ruleset The current ruleset's struct.\n /// @return metadata The current ruleset's metadata.\n function currentRulesetOf(uint256 projectId)\n external\n view\n override\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata)\n {\n ruleset = _currentRulesetOf(projectId);\n metadata = ruleset.expandMetadata();\n }\n\n /// @notice Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\n /// @param projectId The ID of the project the ruleset belongs to.\n /// @return ruleset The ruleset's struct.\n /// @return metadata The ruleset's metadata.\n function getRulesetOf(\n uint256 projectId,\n uint256 rulesetId\n )\n external\n view\n override\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata)\n {\n ruleset = RULESETS.getRulesetOf(projectId, rulesetId);\n metadata = ruleset.expandMetadata();\n }\n\n /// @notice Gets the latest ruleset queued for a project, its approval status, and its metadata.\n /// @dev The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset\n /// queue).\n /// @param projectId The ID of the project to get the latest ruleset of.\n /// @return ruleset The struct for the project's latest queued ruleset.\n /// @return metadata The ruleset's metadata.\n /// @return approvalStatus The ruleset's approval status.\n function latestQueuedRulesetOf(uint256 projectId)\n external\n view\n override\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata, JBApprovalStatus approvalStatus)\n {\n (ruleset, approvalStatus) = RULESETS.latestQueuedOf(projectId);\n metadata = ruleset.expandMetadata();\n }\n\n /// @notice Check whether the project's terminals can currently be set.\n /// @param projectId The ID of the project to check.\n /// @return A `bool` which is true if the project allows terminals to be set.\n function setTerminalsAllowed(uint256 projectId) external view returns (bool) {\n return _currentRulesetOf(projectId).expandMetadata().allowSetTerminals;\n }\n\n /// @notice Check whether the project's controller can currently be set.\n /// @param projectId The ID of the project to check.\n /// @return A `bool` which is true if the project allows controllers to be set.\n function setControllerAllowed(uint256 projectId) external view returns (bool) {\n return _currentRulesetOf(projectId).expandMetadata().allowSetController;\n }\n\n /// @notice Gets the a project token's total supply, including pending reserved tokens.\n /// @param projectId The ID of the project to get the total token supply of.\n /// @return The total supply of the project's token, including pending reserved tokens.\n function totalTokenSupplyWithReservedTokensOf(uint256 projectId) external view override returns (uint256) {\n // Add the reserved tokens to the total supply.\n return TOKENS.totalSupplyOf(projectId) + pendingReservedTokenBalanceOf[projectId];\n }\n\n /// @notice A project's next ruleset along with its metadata.\n /// @dev If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\n /// @param projectId The ID of the project to get the next ruleset of.\n /// @return ruleset The upcoming ruleset's struct.\n /// @return metadata The upcoming ruleset's metadata.\n function upcomingRulesetOf(uint256 projectId)\n external\n view\n override\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata)\n {\n ruleset = _upcomingRulesetOf(projectId);\n metadata = ruleset.expandMetadata();\n }\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Indicates whether this contract adheres to the specified interface.\n /// @dev See {IERC165-supportsInterface}.\n /// @param interfaceId The ID of the interface to check for adherence to.\n /// @return A flag indicating if the provided interface ID is supported.\n function supportsInterface(bytes4 interfaceId) public pure override returns (bool) {\n return interfaceId == type(IJBController).interfaceId || interfaceId == type(IJBProjectUriRegistry).interfaceId\n || interfaceId == type(IJBDirectoryAccessControl).interfaceId || interfaceId == type(IJBMigratable).interfaceId\n || interfaceId == type(IJBPermissioned).interfaceId || interfaceId == type(IERC165).interfaceId;\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @dev `ERC-2771` specifies the context as being a single address (20 bytes).\n function _contextSuffixLength() internal view override(ERC2771Context, Context) returns (uint256) {\n return super._contextSuffixLength();\n }\n\n /// @notice The project's current ruleset.\n /// @param projectId The ID of the project to check.\n /// @return The project's current ruleset.\n function _currentRulesetOf(uint256 projectId) internal view returns (JBRuleset memory) {\n return RULESETS.currentOf(projectId);\n }\n\n /// @notice Indicates whether the provided address is a terminal for the project.\n /// @param projectId The ID of the project to check.\n /// @param terminal The address to check.\n /// @return A flag indicating if the provided address is a terminal for the project.\n function _isTerminalOf(uint256 projectId, address terminal) internal view returns (bool) {\n return DIRECTORY.isTerminalOf(projectId, IJBTerminal(terminal));\n }\n\n /// @notice Indicates whether the provided address has mint permission for the project byway of the data hook.\n /// @param projectId The ID of the project to check.\n /// @param ruleset The ruleset to check.\n /// @param addrs The address to check.\n /// @return A flag indicating if the provided address has mint permission for the project.\n function _hasDataHookMintPermissionFor(\n uint256 projectId,\n JBRuleset memory ruleset,\n address addrs\n )\n internal\n view\n returns (bool)\n {\n return ruleset.dataHook() != address(0)\n && IJBRulesetDataHook(ruleset.dataHook()).hasMintPermissionFor(projectId, addrs);\n }\n\n /// @notice The calldata. Preferred to use over `msg.data`.\n /// @return calldata The `msg.data` of this call.\n function _msgData() internal view override(ERC2771Context, Context) returns (bytes calldata) {\n return ERC2771Context._msgData();\n }\n\n /// @notice The message's sender. Preferred to use over `msg.sender`.\n /// @return sender The address which sent this call.\n function _msgSender() internal view override(ERC2771Context, Context) returns (address sender) {\n return ERC2771Context._msgSender();\n }\n\n /// @notice The project's upcoming ruleset.\n /// @param projectId The ID of the project to check.\n /// @return The project's upcoming ruleset.\n function _upcomingRulesetOf(uint256 projectId) internal view returns (JBRuleset memory) {\n return RULESETS.upcomingOf(projectId);\n }\n\n //*********************************************************************//\n // --------------------- external transactions ----------------------- //\n //*********************************************************************//\n\n /// @notice Add a price feed for a project.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\n /// @param projectId The ID of the project to add the feed for.\n /// @param pricingCurrency The currency the feed's output price is in terms of.\n /// @param unitCurrency The currency being priced by the feed.\n /// @param feed The address of the price feed to add.\n function addPriceFeed(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n IJBPriceFeed feed\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.ADD_PRICE_FEED\n });\n\n JBRuleset memory ruleset = _currentRulesetOf(projectId);\n\n // Make sure the project's ruleset allows adding price feeds.\n if (!ruleset.allowAddPriceFeed()) revert JBController_AddingPriceFeedNotAllowed();\n\n PRICES.addPriceFeedFor({\n projectId: projectId,\n pricingCurrency: pricingCurrency,\n unitCurrency: unitCurrency,\n feed: feed\n });\n }\n\n /// @notice Burns a project's tokens or credits from the specific holder's balance.\n /// @dev Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's\n /// terminal.\n /// @param holder The address whose tokens are being burned.\n /// @param projectId The ID of the project whose tokens are being burned.\n /// @param tokenCount The number of tokens to burn.\n /// @param memo A memo to pass along to the emitted event.\n function burnTokensOf(\n address holder,\n uint256 projectId,\n uint256 tokenCount,\n string calldata memo\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionAllowingOverrideFrom({\n account: holder,\n projectId: projectId,\n permissionId: JBPermissionIds.BURN_TOKENS,\n alsoGrantAccessIf: _isTerminalOf(projectId, _msgSender())\n });\n\n // There must be tokens to burn.\n if (tokenCount == 0) revert JBController_ZeroTokensToBurn();\n\n emit BurnTokens({holder: holder, projectId: projectId, tokenCount: tokenCount, memo: memo, caller: _msgSender()});\n\n // Burn the tokens.\n TOKENS.burnFrom({holder: holder, projectId: projectId, count: tokenCount});\n }\n\n /// @notice Redeem credits to claim tokens into a `beneficiary`'s account.\n /// @dev Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\n /// @param holder The address to redeem credits from.\n /// @param projectId The ID of the project whose tokens are being claimed.\n /// @param tokenCount The number of tokens to claim.\n /// @param beneficiary The account the claimed tokens will go to.\n function claimTokensFor(\n address holder,\n uint256 projectId,\n uint256 tokenCount,\n address beneficiary\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionFrom({account: holder, projectId: projectId, permissionId: JBPermissionIds.CLAIM_TOKENS});\n\n TOKENS.claimTokensFor({holder: holder, projectId: projectId, count: tokenCount, beneficiary: beneficiary});\n }\n\n /// @notice Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\n /// @dev Deploys the project's ERC-20 contract.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\n /// @param projectId The ID of the project to deploy the ERC-20 for.\n /// @param name The ERC-20's name.\n /// @param symbol The ERC-20's symbol.\n /// @param salt The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based\n /// on `msg.sender` and the `TOKEN` implementation address.\n /// @return token The address of the token that was deployed.\n function deployERC20For(\n uint256 projectId,\n string calldata name,\n string calldata symbol,\n bytes32 salt\n )\n external\n override\n returns (IJBToken token)\n {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.DEPLOY_ERC20\n });\n\n if (salt != bytes32(0)) salt = keccak256(abi.encodePacked(_msgSender(), salt));\n\n return TOKENS.deployERC20For({projectId: projectId, name: name, symbol: symbol, salt: salt});\n }\n\n /// @notice When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the\n /// terminal.\n /// @dev Can only be called by this controller.\n /// @param terminal The terminal to pay.\n /// @param projectId The ID of the project being paid.\n /// @param token The token being paid with.\n /// @param splitTokenCount The number of tokens being paid.\n /// @param beneficiary The payment's beneficiary.\n /// @param metadata The pay metadata sent to the terminal.\n function executePayReservedTokenToTerminal(\n IJBTerminal terminal,\n uint256 projectId,\n IJBToken token,\n uint256 splitTokenCount,\n address beneficiary,\n bytes calldata metadata\n )\n external\n {\n // Can only be called by this contract.\n require(msg.sender == address(this));\n\n // Approve the tokens being paid.\n IERC20(address(token)).forceApprove(address(terminal), splitTokenCount);\n\n // slither-disable-next-line unused-return\n terminal.pay({\n projectId: projectId,\n token: address(token),\n amount: splitTokenCount,\n beneficiary: beneficiary,\n minReturnedTokens: 0,\n memo: \"\",\n metadata: metadata\n });\n\n // Make sure that the terminal received the tokens.\n assert(IERC20(address(token)).allowance(address(this), address(terminal)) == 0);\n }\n\n /// @notice Creates a project.\n /// @dev This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the\n /// specified splits and terminals. Each operation within this transaction can be done in sequence separately.\n /// @dev Anyone can deploy a project to any `owner`'s address.\n /// @param owner The project's owner. The project ERC-721 will be minted to this address.\n /// @param projectUri The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://`\n /// prefix. This can be updated by the project's owner.\n /// @param rulesetConfigurations The rulesets to queue.\n /// @param terminalConfigurations The terminals to set up for the project.\n /// @param memo A memo to pass along to the emitted event.\n /// @return projectId The project's ID.\n function launchProjectFor(\n address owner,\n string calldata projectUri,\n JBRulesetConfig[] calldata rulesetConfigurations,\n JBTerminalConfig[] calldata terminalConfigurations,\n string calldata memo\n )\n external\n override\n returns (uint256 projectId)\n {\n // Mint the project ERC-721 into the owner's wallet.\n // slither-disable-next-line reentrancy-benign\n projectId = PROJECTS.createFor(owner);\n\n // If provided, set the project's metadata URI.\n if (bytes(projectUri).length > 0) {\n uriOf[projectId] = projectUri;\n }\n\n // Set this contract as the project's controller in the directory.\n DIRECTORY.setControllerOf(projectId, IERC165(this));\n\n // Configure the terminals.\n _configureTerminals(projectId, terminalConfigurations);\n\n // Queue the rulesets.\n // slither-disable-next-line reentrancy-events\n uint256 rulesetId = _queueRulesets(projectId, rulesetConfigurations);\n\n emit LaunchProject({\n rulesetId: rulesetId,\n projectId: projectId,\n projectUri: projectUri,\n memo: memo,\n caller: _msgSender()\n });\n }\n\n /// @notice Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets\n /// should use `queueRulesetsOf(...)`.\n /// @dev Each operation within this transaction can be done in sequence separately.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\n /// @param projectId The ID of the project to launch rulesets for.\n /// @param rulesetConfigurations The rulesets to queue.\n /// @param terminalConfigurations The terminals to set up.\n /// @param memo A memo to pass along to the emitted event.\n /// @return rulesetId The ID of the last successfully queued ruleset.\n function launchRulesetsFor(\n uint256 projectId,\n JBRulesetConfig[] calldata rulesetConfigurations,\n JBTerminalConfig[] calldata terminalConfigurations,\n string calldata memo\n )\n external\n override\n returns (uint256 rulesetId)\n {\n // Make sure there are rulesets being queued.\n if (rulesetConfigurations.length == 0) revert JBController_RulesetsArrayEmpty();\n\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.QUEUE_RULESETS\n });\n\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_TERMINALS\n });\n\n // If the project has already had rulesets, use `queueRulesetsOf(...)` instead.\n if (RULESETS.latestRulesetIdOf(projectId) > 0) {\n revert JBController_RulesetsAlreadyLaunched();\n }\n\n // Set this contract as the project's controller in the directory.\n DIRECTORY.setControllerOf(projectId, IERC165(this));\n\n // Configure the terminals.\n _configureTerminals(projectId, terminalConfigurations);\n\n // Queue the first ruleset.\n // slither-disable-next-line reentrancy-events\n rulesetId = _queueRulesets(projectId, rulesetConfigurations);\n\n emit LaunchRulesets({rulesetId: rulesetId, projectId: projectId, memo: memo, caller: _msgSender()});\n }\n\n /// @notice Migrate a project from this controller to another one.\n /// @dev Can only be called by the directory.\n /// @param projectId The ID of the project to migrate.\n /// @param to The controller to migrate the project to.\n function migrate(uint256 projectId, IERC165 to) external override {\n // Make sure this is being called by the directory.\n if (msg.sender != address(DIRECTORY)) revert JBController_OnlyDirectory(msg.sender, DIRECTORY);\n\n emit Migrate({projectId: projectId, to: to, caller: msg.sender});\n\n // Mint any pending reserved tokens before migrating.\n if (pendingReservedTokenBalanceOf[projectId] != 0) {\n _sendReservedTokensToSplitsOf(projectId);\n }\n\n // Prepare the new controller to receive the project.\n if (to.supportsInterface(type(IJBMigratable).interfaceId)) {\n IJBMigratable(address(to)).receiveMigrationFrom(IERC165(this), projectId);\n }\n }\n\n /// @notice Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion\n /// according to the ruleset's reserved percent.\n /// @dev Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of\n /// the project's terminals, or the project's data hook.\n /// @dev If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the\n /// project's terminals or data hook.\n /// @param projectId The ID of the project whose tokens are being minted.\n /// @param tokenCount The number of tokens to mint, including any reserved tokens.\n /// @param beneficiary The address which will receive the (non-reserved) tokens.\n /// @param memo A memo to pass along to the emitted event.\n /// @param useReservedPercent Whether to apply the ruleset's reserved percent.\n /// @return beneficiaryTokenCount The number of tokens minted for the `beneficiary`.\n function mintTokensOf(\n uint256 projectId,\n uint256 tokenCount,\n address beneficiary,\n string calldata memo,\n bool useReservedPercent\n )\n external\n override\n returns (uint256 beneficiaryTokenCount)\n {\n // There should be tokens to mint.\n if (tokenCount == 0) revert JBController_ZeroTokensToMint();\n\n // Keep a reference to the reserved percent.\n uint256 reservedPercent;\n\n // Get a reference to the project's ruleset.\n JBRuleset memory ruleset = _currentRulesetOf(projectId);\n\n // Minting is restricted to: the project's owner, addresses with permission to `MINT_TOKENS`, the project's\n // terminals, and the project's data hook.\n _requirePermissionAllowingOverrideFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.MINT_TOKENS,\n alsoGrantAccessIf: _isTerminalOf(projectId, _msgSender()) || _msgSender() == ruleset.dataHook()\n || _hasDataHookMintPermissionFor(projectId, ruleset, _msgSender())\n });\n\n // If the message sender is not the project's terminal or data hook, the ruleset must have `allowOwnerMinting`\n // set to `true`.\n if (\n ruleset.id != 0 && !ruleset.allowOwnerMinting() && !_isTerminalOf(projectId, _msgSender())\n && _msgSender() != address(ruleset.dataHook())\n && !_hasDataHookMintPermissionFor(projectId, ruleset, _msgSender())\n ) revert JBController_MintNotAllowedAndNotTerminalOrHook();\n\n // Determine the reserved percent to use.\n reservedPercent = useReservedPercent ? ruleset.reservedPercent() : 0;\n\n if (reservedPercent != JBConstants.MAX_RESERVED_PERCENT) {\n // Calculate the number of (non-reserved) tokens that will be minted to the beneficiary.\n beneficiaryTokenCount =\n mulDiv(tokenCount, JBConstants.MAX_RESERVED_PERCENT - reservedPercent, JBConstants.MAX_RESERVED_PERCENT);\n\n // Mint the tokens.\n // slither-disable-next-line reentrancy-benign,reentrancy-events\n TOKENS.mintFor({holder: beneficiary, projectId: projectId, count: beneficiaryTokenCount});\n }\n\n emit MintTokens({\n beneficiary: beneficiary,\n projectId: projectId,\n tokenCount: tokenCount,\n beneficiaryTokenCount: beneficiaryTokenCount,\n memo: memo,\n reservedPercent: reservedPercent,\n caller: _msgSender()\n });\n\n // Add any reserved tokens to the pending reserved token balance.\n if (reservedPercent > 0) {\n pendingReservedTokenBalanceOf[projectId] += tokenCount - beneficiaryTokenCount;\n }\n }\n\n /// @notice Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the\n /// previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\n /// @param projectId The ID of the project to queue rulesets for.\n /// @param rulesetConfigurations The rulesets to queue.\n /// @param memo A memo to pass along to the emitted event.\n /// @return rulesetId The ID of the last ruleset which was successfully queued.\n function queueRulesetsOf(\n uint256 projectId,\n JBRulesetConfig[] calldata rulesetConfigurations,\n string calldata memo\n )\n external\n override\n returns (uint256 rulesetId)\n {\n // Make sure there are rulesets being queued.\n if (rulesetConfigurations.length == 0) revert JBController_RulesetsArrayEmpty();\n\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.QUEUE_RULESETS\n });\n\n // Queue the rulesets.\n // slither-disable-next-line reentrancy-events\n rulesetId = _queueRulesets(projectId, rulesetConfigurations);\n\n emit QueueRulesets({rulesetId: rulesetId, projectId: projectId, memo: memo, caller: _msgSender()});\n }\n\n /// @notice Prepares this controller to receive a project being migrated from another controller.\n /// @dev This controller should not be the project's controller yet.\n /// @param from The controller being migrated from.\n /// @param projectId The ID of the project that will migrate to this controller.\n function receiveMigrationFrom(IERC165 from, uint256 projectId) external override {\n // Keep a reference to the sender.\n address sender = _msgSender();\n\n // Make sure the sender is the expected source controller.\n if (sender != address(from)) revert JBController_OnlyFromTargetTerminal(sender, address(from));\n\n // If the sending controller is an `IJBProjectUriRegistry`, copy the project's metadata URI.\n if (\n from.supportsInterface(type(IJBProjectUriRegistry).interfaceId) && DIRECTORY.controllerOf(projectId) == from\n ) {\n uriOf[projectId] = IJBProjectUriRegistry(address(from)).uriOf(projectId);\n }\n }\n\n /// @notice Sends a project's pending reserved tokens to its reserved token splits.\n /// @dev If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to\n /// the project's owner.\n /// @param projectId The ID of the project to send reserved tokens for.\n /// @return The amount of reserved tokens minted and sent.\n function sendReservedTokensToSplitsOf(uint256 projectId) external override returns (uint256) {\n return _sendReservedTokensToSplitsOf(projectId);\n }\n\n /// @notice Sets a project's split groups. The new split groups must include any current splits which are locked.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\n /// @param projectId The ID of the project to set the split groups of.\n /// @param rulesetId The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the\n /// default split groups, which are used when a ruleset has no splits set. If there are no default splits and no\n /// splits are set, all splits are sent to the project's owner.\n /// @param splitGroups An array of split groups to set.\n function setSplitGroupsOf(\n uint256 projectId,\n uint256 rulesetId,\n JBSplitGroup[] calldata splitGroups\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_SPLIT_GROUPS\n });\n\n // Set the split groups.\n SPLITS.setSplitGroupsOf({projectId: projectId, rulesetId: rulesetId, splitGroups: splitGroups});\n }\n\n /// @notice Set a project's token. If the project's token is already set, this will revert.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\n /// @param projectId The ID of the project to set the token of.\n /// @param token The new token's address.\n function setTokenFor(uint256 projectId, IJBToken token) external override {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_TOKEN\n });\n\n // Get a reference to the current ruleset.\n JBRuleset memory ruleset = _currentRulesetOf(projectId);\n\n // If there's no current ruleset, get a reference to the upcoming one.\n if (ruleset.id == 0) ruleset = _upcomingRulesetOf(projectId);\n\n // If owner minting is disabled for the ruleset, the owner cannot change the token.\n if (!ruleset.allowSetCustomToken()) revert JBController_RulesetSetTokenNotAllowed();\n\n TOKENS.setTokenFor({projectId: projectId, token: token});\n }\n\n /// @notice Set a project's metadata URI.\n /// @dev This is typically an IPFS hash, optionally with an `ipfs://` prefix.\n /// @dev Can only be called by the project's owner or an address with the owner's permission to\n /// `SET_PROJECT_URI`.\n /// @param projectId The ID of the project to set the metadata URI of.\n /// @param uri The metadata URI to set.\n function setUriOf(uint256 projectId, string calldata uri) external override {\n // Enforce permissions.\n _requirePermissionFrom({\n account: PROJECTS.ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.SET_PROJECT_URI\n });\n\n // Set the project's metadata URI.\n uriOf[projectId] = uri;\n\n emit SetUri({projectId: projectId, uri: uri, caller: _msgSender()});\n }\n\n /// @notice Allows a credit holder to transfer credits to another address.\n /// @dev Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\n /// @param holder The address to transfer credits from.\n /// @param projectId The ID of the project whose credits are being transferred.\n /// @param recipient The address to transfer credits to.\n /// @param creditCount The number of credits to transfer.\n function transferCreditsFrom(\n address holder,\n uint256 projectId,\n address recipient,\n uint256 creditCount\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionFrom({account: holder, projectId: projectId, permissionId: JBPermissionIds.TRANSFER_CREDITS});\n\n // Get a reference to the project's ruleset.\n JBRuleset memory ruleset = _currentRulesetOf(projectId);\n\n // Credit transfers must not be paused.\n if (ruleset.pauseCreditTransfers()) revert JBController_CreditTransfersPaused();\n\n TOKENS.transferCreditsFrom({holder: holder, projectId: projectId, recipient: recipient, count: creditCount});\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice Set up a project's terminals.\n /// @param projectId The ID of the project to set up terminals for.\n /// @param terminalConfigs The terminals to set up.\n function _configureTerminals(uint256 projectId, JBTerminalConfig[] calldata terminalConfigs) internal {\n // Initialize an array of terminals to populate.\n IJBTerminal[] memory terminals = new IJBTerminal[](terminalConfigs.length);\n\n for (uint256 i; i < terminalConfigs.length; i++) {\n // Set the terminal configuration being iterated on.\n JBTerminalConfig memory terminalConfig = terminalConfigs[i];\n\n // Add the accounting contexts for the specified tokens.\n terminalConfig.terminal.addAccountingContextsFor({\n projectId: projectId,\n accountingContexts: terminalConfig.accountingContextsToAccept\n });\n\n // Add the terminal.\n terminals[i] = terminalConfig.terminal;\n }\n\n // Set the terminals in the directory.\n if (terminalConfigs.length > 0) {\n DIRECTORY.setTerminalsOf({projectId: projectId, terminals: terminals});\n }\n }\n\n /// @notice Queues one or more rulesets and stores information pertinent to the configuration.\n /// @param projectId The ID of the project to queue rulesets for.\n /// @param rulesetConfigurations The rulesets being queued.\n /// @return rulesetId The ID of the last ruleset that was successfully queued.\n function _queueRulesets(\n uint256 projectId,\n JBRulesetConfig[] calldata rulesetConfigurations\n )\n internal\n returns (uint256 rulesetId)\n {\n for (uint256 i; i < rulesetConfigurations.length; i++) {\n // Get a reference to the ruleset config being iterated on.\n JBRulesetConfig memory rulesetConfig = rulesetConfigurations[i];\n\n // Make sure its reserved percent is valid.\n if (rulesetConfig.metadata.reservedPercent > JBConstants.MAX_RESERVED_PERCENT) {\n revert JBController_InvalidReservedPercent(\n rulesetConfig.metadata.reservedPercent, JBConstants.MAX_RESERVED_PERCENT\n );\n }\n\n // Make sure its cash out tax rate is valid.\n if (rulesetConfig.metadata.cashOutTaxRate > JBConstants.MAX_CASH_OUT_TAX_RATE) {\n revert JBController_InvalidCashOutTaxRate(\n rulesetConfig.metadata.cashOutTaxRate, JBConstants.MAX_CASH_OUT_TAX_RATE\n );\n }\n\n // Queue its ruleset.\n JBRuleset memory ruleset = RULESETS.queueFor({\n projectId: projectId,\n duration: rulesetConfig.duration,\n weight: rulesetConfig.weight,\n weightCutPercent: rulesetConfig.weightCutPercent,\n approvalHook: rulesetConfig.approvalHook,\n metadata: JBRulesetMetadataResolver.packRulesetMetadata(rulesetConfig.metadata),\n mustStartAtOrAfter: rulesetConfig.mustStartAtOrAfter\n });\n\n // Set its split groups.\n SPLITS.setSplitGroupsOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n splitGroups: rulesetConfig.splitGroups\n });\n\n // Set its fund access limits.\n FUND_ACCESS_LIMITS.setFundAccessLimitsFor({\n projectId: projectId,\n rulesetId: ruleset.id,\n fundAccessLimitGroups: rulesetConfig.fundAccessLimitGroups\n });\n\n // If this is the last configuration being queued, return the ruleset's ID.\n if (i == rulesetConfigurations.length - 1) {\n rulesetId = ruleset.id;\n }\n }\n }\n\n /// @notice Sends pending reserved tokens to the project's reserved token splits.\n /// @dev If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to\n /// the project's owner.\n /// @param projectId The ID of the project to send reserved tokens for.\n /// @return tokenCount The amount of reserved tokens minted and sent.\n function _sendReservedTokensToSplitsOf(uint256 projectId) internal returns (uint256 tokenCount) {\n // Get a reference to the number of tokens that need to be minted.\n tokenCount = pendingReservedTokenBalanceOf[projectId];\n\n // Revert if there are no pending reserved tokens\n if (tokenCount == 0) revert JBController_NoReservedTokens();\n\n // Get the ruleset to read the reserved percent from.\n JBRuleset memory ruleset = _currentRulesetOf(projectId);\n\n // Reset the pending reserved token balance.\n pendingReservedTokenBalanceOf[projectId] = 0;\n\n // Get a reference to the project's owner.\n address owner = PROJECTS.ownerOf(projectId);\n\n // Send reserved tokens to splits and get a reference to the amount left after the splits have all been paid.\n uint256 leftoverTokenCount = tokenCount == 0\n ? 0\n : _sendReservedTokensToSplitGroupOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n groupId: JBSplitGroupIds.RESERVED_TOKENS,\n tokenCount: tokenCount\n });\n\n // Mint any leftover tokens to the project owner.\n if (leftoverTokenCount > 0) {\n TOKENS.mintFor({holder: owner, projectId: projectId, count: leftoverTokenCount});\n }\n\n emit SendReservedTokensToSplits({\n rulesetId: ruleset.id,\n rulesetCycleNumber: ruleset.cycleNumber,\n projectId: projectId,\n owner: owner,\n tokenCount: tokenCount,\n leftoverAmount: leftoverTokenCount,\n caller: _msgSender()\n });\n }\n\n /// @notice Send project tokens to a split group.\n /// @dev This is used to send reserved tokens to the reserved token split group.\n /// @param projectId The ID of the project the splits belong to.\n /// @param rulesetId The ID of the split group's ruleset.\n /// @param groupId The ID of the split group.\n /// @param tokenCount The number of tokens to send.\n /// @return leftoverTokenCount If the split percents don't add up to 100%, the leftover amount is returned.\n function _sendReservedTokensToSplitGroupOf(\n uint256 projectId,\n uint256 rulesetId,\n uint256 groupId,\n uint256 tokenCount\n )\n internal\n returns (uint256 leftoverTokenCount)\n {\n // Set the leftover amount to the initial amount.\n leftoverTokenCount = tokenCount;\n\n // Get a reference to the split group.\n JBSplit[] memory splits = SPLITS.splitsOf({projectId: projectId, rulesetId: rulesetId, groupId: groupId});\n\n // Keep a reference to the number of splits being iterated on.\n uint256 numberOfSplits = splits.length;\n\n // Send the tokens to the splits.\n for (uint256 i; i < numberOfSplits; i++) {\n // Get a reference to the split being iterated on.\n JBSplit memory split = splits[i];\n\n // Calculate the amount to send to the split.\n uint256 splitTokenCount = mulDiv(tokenCount, split.percent, JBConstants.SPLITS_TOTAL_PERCENT);\n\n // Mints tokens for the split if needed.\n if (splitTokenCount > 0) {\n // 1. If the split has a `hook`, call the hook's `processSplitWith` function.\n // 2. Otherwise, if the split has a `projectId`, try to pay the project using the split's `beneficiary`,\n // or the `_msgSender()` if the split has no beneficiary.\n // 3. Otherwise, if the split has a beneficiary, send the tokens to the split's beneficiary.\n // 4. Otherwise, send the tokens to the `_msgSender()`.\n\n // If the split has a hook, call its `processSplitWith` function.\n if (split.hook != IJBSplitHook(address(0))) {\n // Mint the tokens for the split hook.\n // slither-disable-next-line reentrancy-events\n TOKENS.mintFor({holder: address(split.hook), projectId: projectId, count: splitTokenCount});\n\n // Get a reference to the project token address. If the project doesn't have a token, this will\n // return the 0 address.\n IJBToken token = TOKENS.tokenOf(projectId);\n\n // slither-disable-next-line reentrancy-events\n split.hook.processSplitWith(\n JBSplitHookContext({\n token: address(token),\n amount: splitTokenCount,\n decimals: 18, // Hard-coded in `JBTokens`.\n projectId: projectId,\n groupId: groupId,\n split: split\n })\n );\n // If the split has a project ID, try to pay the project. If that fails, pay the beneficiary.\n } else {\n // Pay the project using the split's beneficiary if one was provided. Otherwise, use the message\n // sender.\n address beneficiary = split.beneficiary != address(0) ? split.beneficiary : _msgSender();\n\n if (split.projectId != 0) {\n // Get a reference to the project's token address. If the project doesn't have a token, this\n // will return the 0 address.\n IJBToken token = TOKENS.tokenOf(projectId);\n\n // Get a reference to the receiving project's primary payment terminal for the token.\n IJBTerminal terminal = token == IJBToken(address(0))\n ? IJBTerminal(address(0))\n : DIRECTORY.primaryTerminalOf({projectId: split.projectId, token: address(token)});\n\n // If the project doesn't have a token, or if the receiving project doesn't have a terminal\n // which accepts the token, send the tokens to the beneficiary.\n if (address(token) == address(0) || address(terminal) == address(0)) {\n // Mint the tokens to the beneficiary.\n // slither-disable-next-line reentrancy-events\n TOKENS.mintFor({holder: beneficiary, projectId: projectId, count: splitTokenCount});\n } else {\n // Mint the tokens to this contract.\n // slither-disable-next-line reentrancy-events\n TOKENS.mintFor({holder: address(this), projectId: projectId, count: splitTokenCount});\n\n // Use the `projectId` in the pay metadata.\n // slither-disable-next-line reentrancy-events\n bytes memory metadata = bytes(abi.encodePacked(projectId));\n\n // Try to fulfill the payment.\n try this.executePayReservedTokenToTerminal({\n projectId: split.projectId,\n terminal: terminal,\n token: token,\n splitTokenCount: splitTokenCount,\n beneficiary: beneficiary,\n metadata: metadata\n }) {} catch (bytes memory reason) {\n emit ReservedDistributionReverted({\n projectId: projectId,\n split: split,\n tokenCount: splitTokenCount,\n reason: reason,\n caller: _msgSender()\n });\n\n // If it fails, transfer the tokens from this contract to the beneficiary.\n IERC20(address(token)).safeTransfer(beneficiary, splitTokenCount);\n }\n }\n } else if (beneficiary != address(0xdead)) {\n // If the split has no project ID, mint the tokens to the beneficiary.\n TOKENS.mintFor({holder: beneficiary, projectId: projectId, count: splitTokenCount});\n }\n }\n\n // Subtract the amount sent from the leftover.\n leftoverTokenCount -= splitTokenCount;\n }\n\n emit SendReservedTokensToSplit({\n projectId: projectId,\n rulesetId: rulesetId,\n groupId: groupId,\n split: split,\n tokenCount: splitTokenCount,\n caller: _msgSender()\n });\n }\n }\n}\n" + }, + "src/interfaces/IJBCashOutHook.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBAfterCashOutRecordedContext} from \"./../structs/JBAfterCashOutRecordedContext.sol\";\n\n/// @notice Hook called after a terminal's `cashOutTokensOf(...)` logic completes (if passed by the ruleset's data\n/// hook).\ninterface IJBCashOutHook is IERC165 {\n /// @notice This function is called by the terminal's `cashOutTokensOf(...)` function after the cash out has been\n /// recorded in the terminal store.\n /// @dev Critical business logic should be protected by appropriate access control.\n /// @param context The context passed in by the terminal, as a `JBAfterCashOutRecordedContext` struct.\n function afterCashOutRecordedWith(JBAfterCashOutRecordedContext calldata context) external payable;\n}\n" + }, + "src/interfaces/IJBController.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {IJBDirectory} from \"./IJBDirectory.sol\";\nimport {IJBDirectoryAccessControl} from \"./IJBDirectoryAccessControl.sol\";\nimport {IJBFundAccessLimits} from \"./IJBFundAccessLimits.sol\";\nimport {IJBPriceFeed} from \"./IJBPriceFeed.sol\";\nimport {IJBPrices} from \"./IJBPrices.sol\";\nimport {IJBProjects} from \"./IJBProjects.sol\";\nimport {IJBProjectUriRegistry} from \"./IJBProjectUriRegistry.sol\";\nimport {IJBRulesets} from \"./IJBRulesets.sol\";\nimport {IJBSplits} from \"./IJBSplits.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {IJBToken} from \"./IJBToken.sol\";\nimport {IJBTokens} from \"./IJBTokens.sol\";\nimport {JBApprovalStatus} from \"./../enums/JBApprovalStatus.sol\";\nimport {JBRuleset} from \"./../structs/JBRuleset.sol\";\nimport {JBRulesetConfig} from \"./../structs/JBRulesetConfig.sol\";\nimport {JBRulesetMetadata} from \"./../structs/JBRulesetMetadata.sol\";\nimport {JBRulesetWithMetadata} from \"./../structs/JBRulesetWithMetadata.sol\";\nimport {JBSplit} from \"./../structs/JBSplit.sol\";\nimport {JBSplitGroup} from \"./../structs/JBSplitGroup.sol\";\nimport {JBTerminalConfig} from \"./../structs/JBTerminalConfig.sol\";\n\ninterface IJBController is IERC165, IJBProjectUriRegistry, IJBDirectoryAccessControl {\n event BurnTokens(\n address indexed holder, uint256 indexed projectId, uint256 tokenCount, string memo, address caller\n );\n event LaunchProject(uint256 rulesetId, uint256 projectId, string projectUri, string memo, address caller);\n event LaunchRulesets(uint256 rulesetId, uint256 projectId, string memo, address caller);\n event MintTokens(\n address indexed beneficiary,\n uint256 indexed projectId,\n uint256 tokenCount,\n uint256 beneficiaryTokenCount,\n string memo,\n uint256 reservedPercent,\n address caller\n );\n event PrepMigration(uint256 indexed projectId, address from, address caller);\n event QueueRulesets(uint256 rulesetId, uint256 projectId, string memo, address caller);\n event ReservedDistributionReverted(\n uint256 indexed projectId, JBSplit split, uint256 tokenCount, bytes reason, address caller\n );\n event SendReservedTokensToSplit(\n uint256 indexed projectId,\n uint256 indexed rulesetId,\n uint256 indexed groupId,\n JBSplit split,\n uint256 tokenCount,\n address caller\n );\n event SendReservedTokensToSplits(\n uint256 indexed rulesetId,\n uint256 indexed rulesetCycleNumber,\n uint256 indexed projectId,\n address owner,\n uint256 tokenCount,\n uint256 leftoverAmount,\n address caller\n );\n event SetUri(uint256 indexed projectId, string uri, address caller);\n\n function DIRECTORY() external view returns (IJBDirectory);\n function FUND_ACCESS_LIMITS() external view returns (IJBFundAccessLimits);\n function PRICES() external view returns (IJBPrices);\n function PROJECTS() external view returns (IJBProjects);\n function RULESETS() external view returns (IJBRulesets);\n function SPLITS() external view returns (IJBSplits);\n function TOKENS() external view returns (IJBTokens);\n\n function allRulesetsOf(\n uint256 projectId,\n uint256 startingId,\n uint256 size\n )\n external\n view\n returns (JBRulesetWithMetadata[] memory rulesets);\n function currentRulesetOf(uint256 projectId)\n external\n view\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);\n function getRulesetOf(\n uint256 projectId,\n uint256 rulesetId\n )\n external\n view\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);\n function latestQueuedRulesetOf(uint256 projectId)\n external\n view\n returns (JBRuleset memory, JBRulesetMetadata memory metadata, JBApprovalStatus);\n function pendingReservedTokenBalanceOf(uint256 projectId) external view returns (uint256);\n function totalTokenSupplyWithReservedTokensOf(uint256 projectId) external view returns (uint256);\n function upcomingRulesetOf(uint256 projectId)\n external\n view\n returns (JBRuleset memory ruleset, JBRulesetMetadata memory metadata);\n\n function addPriceFeed(\n uint256 projectId,\n uint256 pricingCurrency,\n uint256 unitCurrency,\n IJBPriceFeed feed\n )\n external;\n function burnTokensOf(address holder, uint256 projectId, uint256 tokenCount, string calldata memo) external;\n function claimTokensFor(address holder, uint256 projectId, uint256 tokenCount, address beneficiary) external;\n function deployERC20For(\n uint256 projectId,\n string calldata name,\n string calldata symbol,\n bytes32 salt\n )\n external\n returns (IJBToken token);\n function launchProjectFor(\n address owner,\n string calldata projectUri,\n JBRulesetConfig[] calldata rulesetConfigurations,\n JBTerminalConfig[] memory terminalConfigurations,\n string calldata memo\n )\n external\n returns (uint256 projectId);\n function launchRulesetsFor(\n uint256 projectId,\n JBRulesetConfig[] calldata rulesetConfigurations,\n JBTerminalConfig[] memory terminalConfigurations,\n string calldata memo\n )\n external\n returns (uint256 rulesetId);\n function mintTokensOf(\n uint256 projectId,\n uint256 tokenCount,\n address beneficiary,\n string calldata memo,\n bool useReservedPercent\n )\n external\n returns (uint256 beneficiaryTokenCount);\n function queueRulesetsOf(\n uint256 projectId,\n JBRulesetConfig[] calldata rulesetConfigurations,\n string calldata memo\n )\n external\n returns (uint256 rulesetId);\n function sendReservedTokensToSplitsOf(uint256 projectId) external returns (uint256);\n function setSplitGroupsOf(uint256 projectId, uint256 rulesetId, JBSplitGroup[] calldata splitGroups) external;\n function setTokenFor(uint256 projectId, IJBToken token) external;\n function transferCreditsFrom(address holder, uint256 projectId, address recipient, uint256 creditCount) external;\n}\n" + }, + "src/interfaces/IJBProjectUriRegistry.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBProjectUriRegistry {\n function uriOf(uint256 projectId) external view returns (string memory);\n function setUriOf(uint256 projectId, string calldata uri) external;\n}\n" + }, + "src/interfaces/IJBRulesetDataHook.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {JBBeforePayRecordedContext} from \"./../structs/JBBeforePayRecordedContext.sol\";\nimport {JBBeforeCashOutRecordedContext} from \"./../structs/JBBeforeCashOutRecordedContext.sol\";\nimport {JBCashOutHookSpecification} from \"./../structs/JBCashOutHookSpecification.sol\";\nimport {JBPayHookSpecification} from \"./../structs/JBPayHookSpecification.sol\";\n\n/// @notice Data hooks can extend a terminal's core pay/cashout functionality by overriding the weight or memo. They can\n/// also specify pay/cashout hooks for the terminal to fulfill, or allow addresses to mint a project's tokens on-demand.\n/// @dev If a project's ruleset has `useDataHookForPay` or `useDataHookForCashOut` enabled, its `dataHook` is called by\n/// the terminal upon payments/cashouts (respectively).\ninterface IJBRulesetDataHook is IERC165 {\n /// @notice A flag indicating whether an address has permission to mint a project's tokens on-demand.\n /// @dev A project's data hook can allow any address to mint its tokens.\n /// @param projectId The ID of the project whose token can be minted.\n /// @param addr The address to check the token minting permission of.\n /// @return flag A flag indicating whether the address has permission to mint the project's tokens on-demand.\n function hasMintPermissionFor(uint256 projectId, address addr) external view returns (bool flag);\n\n /// @notice The data calculated before a payment is recorded in the terminal store. This data is provided to the\n /// terminal's `pay(...)` transaction.\n /// @param context The context passed to this data hook by the `pay(...)` function as a `JBBeforePayRecordedContext`\n /// struct.\n /// @return weight The new `weight` to use, overriding the ruleset's `weight`.\n /// @return hookSpecifications The amount and data to send to pay hooks instead of adding to the terminal's balance.\n function beforePayRecordedWith(JBBeforePayRecordedContext calldata context)\n external\n view\n returns (uint256 weight, JBPayHookSpecification[] memory hookSpecifications);\n\n /// @notice The data calculated before a cash out is recorded in the terminal store. This data is provided to the\n /// terminal's `cashOutTokensOf(...)` transaction.\n /// @param context The context passed to this data hook by the `cashOutTokensOf(...)` function as a\n /// `JBBeforeCashOutRecordedContext` struct.\n /// @return cashOutTaxRate The rate determining the amount that should be reclaimable for a given surplus and token\n /// supply.\n /// @return cashOutCount The amount of tokens that should be considered cashed out.\n /// @return totalSupply The total amount of tokens that are considered to be existing.\n /// @return hookSpecifications The amount and data to send to cash out hooks instead of returning to the\n /// beneficiary.\n function beforeCashOutRecordedWith(JBBeforeCashOutRecordedContext calldata context)\n external\n view\n returns (\n uint256 cashOutTaxRate,\n uint256 cashOutCount,\n uint256 totalSupply,\n JBCashOutHookSpecification[] memory hookSpecifications\n );\n}\n" + }, + "src/libraries/JBRulesetMetadataResolver.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {JBRuleset} from \"./../structs/JBRuleset.sol\";\nimport {JBRulesetMetadata} from \"./../structs/JBRulesetMetadata.sol\";\n\nlibrary JBRulesetMetadataResolver {\n function reservedPercent(JBRuleset memory ruleset) internal pure returns (uint16) {\n return uint16(ruleset.metadata >> 4);\n }\n\n function cashOutTaxRate(JBRuleset memory ruleset) internal pure returns (uint16) {\n // Cash out tax rate is a number 0-10000.\n return uint16(ruleset.metadata >> 20);\n }\n\n function baseCurrency(JBRuleset memory ruleset) internal pure returns (uint32) {\n // Currency is a number 0-4294967296.\n return uint32(ruleset.metadata >> 36);\n }\n\n function pausePay(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 68) & 1) == 1;\n }\n\n function pauseCreditTransfers(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 69) & 1) == 1;\n }\n\n function allowOwnerMinting(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 70) & 1) == 1;\n }\n\n function allowSetCustomToken(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 71) & 1) == 1;\n }\n\n function allowTerminalMigration(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 72) & 1) == 1;\n }\n\n function allowSetTerminals(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 73) & 1) == 1;\n }\n\n function allowSetController(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 74) & 1) == 1;\n }\n\n function allowAddAccountingContext(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 75) & 1) == 1;\n }\n\n function allowAddPriceFeed(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 76) & 1) == 1;\n }\n\n function ownerMustSendPayouts(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 77) & 1) == 1;\n }\n\n function holdFees(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 78) & 1) == 1;\n }\n\n function useTotalSurplusForCashOuts(JBRuleset memory ruleset) internal pure returns (bool) {\n return ((ruleset.metadata >> 79) & 1) == 1;\n }\n\n function useDataHookForPay(JBRuleset memory ruleset) internal pure returns (bool) {\n return (ruleset.metadata >> 80) & 1 == 1;\n }\n\n function useDataHookForCashOut(JBRuleset memory ruleset) internal pure returns (bool) {\n return (ruleset.metadata >> 81) & 1 == 1;\n }\n\n function dataHook(JBRuleset memory ruleset) internal pure returns (address) {\n return address(uint160(ruleset.metadata >> 82));\n }\n\n function metadata(JBRuleset memory ruleset) internal pure returns (uint16) {\n return uint16(ruleset.metadata >> 242);\n }\n\n /// @notice Pack the funding cycle metadata.\n /// @param rulesetMetadata The ruleset metadata to validate and pack.\n /// @return packed The packed uint256 of all metadata params. The first 8 bits specify the version.\n function packRulesetMetadata(JBRulesetMetadata memory rulesetMetadata) internal pure returns (uint256 packed) {\n // version 1 in the bits 0-3 (4 bits).\n packed = 1;\n // reserved percent in bits 4-19 (16 bits).\n packed |= uint256(rulesetMetadata.reservedPercent) << 4;\n // cash out tax rate in bits 20-35 (16 bits).\n // cash out tax rate is a number 0-10000.\n packed |= uint256(rulesetMetadata.cashOutTaxRate) << 20;\n // base currency in bits 36-67 (32 bits).\n // base currency is a number 0-16777215.\n packed |= uint256(rulesetMetadata.baseCurrency) << 36;\n // pause pay in bit 68.\n if (rulesetMetadata.pausePay) packed |= 1 << 68;\n // pause credit transfers in bit 69.\n if (rulesetMetadata.pauseCreditTransfers) packed |= 1 << 69;\n // allow discretionary minting in bit 70.\n if (rulesetMetadata.allowOwnerMinting) packed |= 1 << 70;\n // allow a custom token to be set in bit 71.\n if (rulesetMetadata.allowSetCustomToken) packed |= 1 << 71;\n // allow terminal migration in bit 72.\n if (rulesetMetadata.allowTerminalMigration) packed |= 1 << 72;\n // allow set terminals in bit 73.\n if (rulesetMetadata.allowSetTerminals) packed |= 1 << 73;\n // allow set controller in bit 74.\n if (rulesetMetadata.allowSetController) packed |= 1 << 74;\n // allow add accounting context in bit 75.\n if (rulesetMetadata.allowAddAccountingContext) packed |= 1 << 75;\n // allow add price feed in bit 76.\n if (rulesetMetadata.allowAddPriceFeed) packed |= 1 << 76;\n // allow controller migration in bit 77.\n if (rulesetMetadata.ownerMustSendPayouts) packed |= 1 << 77;\n // hold fees in bit 78.\n if (rulesetMetadata.holdFees) packed |= 1 << 78;\n // useTotalSurplusForCashOuts in bit 79.\n if (rulesetMetadata.useTotalSurplusForCashOuts) packed |= 1 << 79;\n // use pay data source in bit 80.\n if (rulesetMetadata.useDataHookForPay) packed |= 1 << 80;\n // use cash out data source in bit 81.\n if (rulesetMetadata.useDataHookForCashOut) packed |= 1 << 81;\n // data source address in bits 82-241.\n packed |= uint256(uint160(address(rulesetMetadata.dataHook))) << 82;\n // metadata in bits 242-255 (14 bits).\n packed |= (uint256(rulesetMetadata.metadata) & 0x3FFF) << 242;\n }\n\n /// @notice Expand the funding cycle metadata.\n /// @param ruleset The funding cycle having its metadata expanded.\n /// @return rulesetMetadata The ruleset's metadata object.\n function expandMetadata(JBRuleset memory ruleset) internal pure returns (JBRulesetMetadata memory) {\n return JBRulesetMetadata(\n reservedPercent(ruleset),\n cashOutTaxRate(ruleset),\n baseCurrency(ruleset),\n pausePay(ruleset),\n pauseCreditTransfers(ruleset),\n allowOwnerMinting(ruleset),\n allowSetCustomToken(ruleset),\n allowTerminalMigration(ruleset),\n allowSetTerminals(ruleset),\n allowSetController(ruleset),\n allowAddAccountingContext(ruleset),\n allowAddPriceFeed(ruleset),\n ownerMustSendPayouts(ruleset),\n holdFees(ruleset),\n useTotalSurplusForCashOuts(ruleset),\n useDataHookForPay(ruleset),\n useDataHookForCashOut(ruleset),\n dataHook(ruleset),\n metadata(ruleset)\n );\n }\n}\n" + }, + "src/libraries/JBSplitGroupIds.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @notice Group IDs that categorize splits.\nlibrary JBSplitGroupIds {\n uint256 public constant RESERVED_TOKENS = 1;\n}\n" + }, + "src/structs/JBAfterCashOutRecordedContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBTokenAmount} from \"./JBTokenAmount.sol\";\n\n/// @custom:member holder The holder of the tokens being cashed out.\n/// @custom:member projectId The ID of the project being cashed out from.\n/// @custom:member rulesetId The ID of the ruleset the cash out is being made during.\n/// @custom:member cashOutCount The number of project tokens being cashed out.\n/// @custom:member cashOutTaxRate The current ruleset's cash out tax rate.\n/// @custom:member reclaimedAmount The token amount being reclaimed from the project's terminal balance. Includes the\n/// token being\n/// reclaimed, the value, the number of decimals included, and the currency of the amount.\n/// @custom:member forwardedAmount The token amount being forwarded to the cash out hook. Includes the token\n/// being forwarded, the value, the number of decimals included, and the currency of the amount.\n/// @custom:member beneficiary The address the reclaimed amount will be sent to.\n/// @custom:member hookMetadata Extra data specified by the data hook, which is sent to the cash out hook.\n/// @custom:member cashOutMetadata Extra data specified by the account cashing out, which is sent to the cash out hook.\nstruct JBAfterCashOutRecordedContext {\n address holder;\n uint256 projectId;\n uint256 rulesetId;\n uint256 cashOutCount;\n JBTokenAmount reclaimedAmount;\n JBTokenAmount forwardedAmount;\n uint256 cashOutTaxRate;\n address payable beneficiary;\n bytes hookMetadata;\n bytes cashOutMetadata;\n}\n" + }, + "src/structs/JBBeforeCashOutRecordedContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBTokenAmount} from \"./JBTokenAmount.sol\";\n\n/// @notice Context sent from the terminal to the ruleset's data hook upon cash out.\n/// @custom:member terminal The terminal that is facilitating the cash out.\n/// @custom:member holder The holder of the tokens being cashed out.\n/// @custom:member projectId The ID of the project whose tokens are being cashed out.\n/// @custom:member rulesetId The ID of the ruleset the cash out is being made during.\n/// @custom:member cashOutCount The number of tokens being cashed out, as a fixed point number with 18 decimals.\n/// @custom:member totalSupply The total token supply being used for the calculation, as a fixed point number with 18\n/// decimals.\n/// @custom:member surplus The surplus amount used for the calculation, as a fixed point number with 18 decimals.\n/// Includes the token of the surplus, the surplus value, the number of decimals\n/// included, and the currency of the surplus.\n/// @custom:member useTotalSurplus If surplus across all of a project's terminals is being used when making cash outs.\n/// @custom:member cashOutTaxRate The cash out tax rate of the ruleset the cash out is being made during.\n/// @custom:member metadata Extra data provided by the casher.\nstruct JBBeforeCashOutRecordedContext {\n address terminal;\n address holder;\n uint256 projectId;\n uint256 rulesetId;\n uint256 cashOutCount;\n uint256 totalSupply;\n JBTokenAmount surplus;\n bool useTotalSurplus;\n uint256 cashOutTaxRate;\n bytes metadata;\n}\n" + }, + "src/structs/JBBeforePayRecordedContext.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBTokenAmount} from \"./JBTokenAmount.sol\";\n\n/// @notice Context sent from the terminal to the ruleset's data hook upon payment.\n/// @custom:member terminal The terminal that is facilitating the payment.\n/// @custom:member payer The address that the payment originated from.\n/// @custom:member amount The payment's token amount, including the token being paid, the value, the number of decimals\n/// included, and the currency of the amount.\n/// @custom:member projectId The ID of the project being paid.\n/// @custom:member rulesetId The ID of the ruleset the payment is being made during.\n/// @custom:member beneficiary The specified address that should be the beneficiary of anything that this payment\n/// yields.\n/// @custom:member weight The weight of the ruleset during which the payment is being made.\n/// @custom:member reservedPercent The reserved percent of the ruleset the payment is being made during.\n/// @custom:member metadata Extra data specified by the payer.\nstruct JBBeforePayRecordedContext {\n address terminal;\n address payer;\n JBTokenAmount amount;\n uint256 projectId;\n uint256 rulesetId;\n address beneficiary;\n uint256 weight;\n uint256 reservedPercent;\n bytes metadata;\n}\n" + }, + "src/structs/JBCashOutHookSpecification.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBCashOutHook} from \"../interfaces/IJBCashOutHook.sol\";\n\n/// @notice A cash out hook specification sent from the ruleset's data hook back to the terminal. This specification is\n/// fulfilled by the terminal.\n/// @custom:member hook The cash out hook to use when fulfilling this specification.\n/// @custom:member amount The amount to send to the hook.\n/// @custom:member metadata Metadata to pass to the hook.\nstruct JBCashOutHookSpecification {\n IJBCashOutHook hook;\n uint256 amount;\n bytes metadata;\n}\n" + }, + "src/structs/JBPayHookSpecification.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBPayHook} from \"../interfaces/IJBPayHook.sol\";\n\n/// @notice A pay hook specification sent from the ruleset's data hook back to the terminal. This specification is\n/// fulfilled by the terminal.\n/// @custom:member hook The pay hook to use when fulfilling this specification.\n/// @custom:member amount The amount to send to the hook.\n/// @custom:member metadata Metadata to pass the hook.\nstruct JBPayHookSpecification {\n IJBPayHook hook;\n uint256 amount;\n bytes metadata;\n}\n" + }, + "src/structs/JBRulesetConfig.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBRulesetApprovalHook} from \"../interfaces/IJBRulesetApprovalHook.sol\";\nimport {JBFundAccessLimitGroup} from \"./JBFundAccessLimitGroup.sol\";\nimport {JBRulesetMetadata} from \"./JBRulesetMetadata.sol\";\nimport {JBSplitGroup} from \"./JBSplitGroup.sol\";\n\n/// @custom:member mustStartAtOrAfter The earliest time the ruleset can start.\n/// @custom:member duration The number of seconds the ruleset lasts for, after which a new ruleset will start. A\n/// duration of 0 means that the ruleset will stay active until the project owner explicitly issues a reconfiguration,\n/// at which point a new ruleset will immediately start with the updated properties. If the duration is greater than 0,\n/// a project owner cannot make changes to a ruleset's parameters while it is active – any proposed changes will apply\n/// to the subsequent ruleset. If no changes are proposed, a ruleset rolls over to another one with the same properties\n/// but new `start` timestamp and a cut `weight`.\n/// @custom:member weight A fixed point number with 18 decimals that contracts can use to base arbitrary calculations\n/// on. For example, payment terminals can use this to determine how many tokens should be minted when a payment is\n/// received.\n/// @custom:member weightCutPercent A percent by how much the `weight` of the subsequent ruleset should be reduced, if\n/// the\n/// project owner hasn't queued the subsequent ruleset with an explicit `weight`. If it's 0, each ruleset will have\n/// equal weight. If the number is 90%, the next ruleset will have a 10% smaller weight. This weight is out of\n/// `JBConstants.MAX_WEIGHT_CUT_PERCENT`.\n/// @custom:member approvalHook An address of a contract that says whether a proposed ruleset should be accepted or\n/// rejected. It\n/// can be used to create rules around how a project owner can change ruleset parameters over time.\n/// @custom:member metadata Metadata specifying the controller-specific parameters that a ruleset can have. These\n/// properties cannot change until the next ruleset starts.\n/// @custom:member splitGroups An array of splits to use for any number of groups while the ruleset is active.\n/// @custom:member fundAccessLimitGroups An array of structs which dictate the amount of funds a project can access from\n/// its balance in each payment terminal while the ruleset is active. Amounts are fixed point numbers using the same\n/// number of decimals as the corresponding terminal. The `_payoutLimit` and `_surplusAllowance` parameters must fit in\n/// a `uint232`.\nstruct JBRulesetConfig {\n uint48 mustStartAtOrAfter;\n uint32 duration;\n uint112 weight;\n uint32 weightCutPercent;\n IJBRulesetApprovalHook approvalHook;\n JBRulesetMetadata metadata;\n JBSplitGroup[] splitGroups;\n JBFundAccessLimitGroup[] fundAccessLimitGroups;\n}\n" + }, + "src/structs/JBRulesetMetadata.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member reservedPercent The reserved percent of the ruleset. This number is a percentage calculated out of\n/// `JBConstants.MAX_RESERVED_PERCENT`.\n/// @custom:member cashOutTaxRate The cash out tax rate of the ruleset. This number is a percentage calculated out of\n/// `JBConstants.MAX_CASH_OUT_TAX_RATE`.\n/// @custom:member baseCurrency The currency on which to base the ruleset's weight. By convention, this is\n/// `uint32(uint160(tokenAddress))` for tokens, or a constant ID from e.g. `JBCurrencyIds` for other currencies.\n/// @custom:member pausePay A flag indicating if the pay functionality should be paused during the ruleset.\n/// @custom:member pauseCreditTransfers A flag indicating if the project token transfer functionality should be paused\n/// during the funding cycle.\n/// @custom:member allowOwnerMinting A flag indicating if the project owner or an operator with the `MINT_TOKENS`\n/// permission from the owner should be allowed to mint project tokens on demand during this ruleset.\n/// @custom:member allowTerminalMigration A flag indicating if migrating terminals should be allowed during this\n/// ruleset.\n/// @custom:member allowSetTerminals A flag indicating if a project's terminals can be added or removed.\n/// @custom:member allowSetController A flag indicating if a project's controller can be changed.\n/// @custom:member allowAddAccountingContext A flag indicating if a project can add new accounting contexts for its\n/// terminals to use.\n/// @custom:member allowAddPriceFeed A flag indicating if a project can add new price feeds to calculate exchange rates\n/// between its tokens.\n/// @custom:member ownerMustSendPayouts A flag indicating if privileged payout distribution should be\n/// enforced, otherwise payouts can be distributed by anyone.\n/// @custom:member holdFees A flag indicating if fees should be held during this ruleset.\n/// @custom:member useTotalSurplusForCashOuts A flag indicating if cash outs should use the project's balance held\n/// in all terminals instead of the project's local terminal balance from which the cash out is being fulfilled.\n/// @custom:member useDataHookForPay A flag indicating if the data hook should be used for pay transactions during this\n/// ruleset.\n/// @custom:member useDataHookForCashOut A flag indicating if the data hook should be used for cash out transactions\n/// during\n/// this ruleset.\n/// @custom:member dataHook The data hook to use during this ruleset.\n/// @custom:member metadata Metadata of the metadata, only the 14 least significant bits can be used, the 2 most\n/// significant bits are disregarded.\nstruct JBRulesetMetadata {\n uint16 reservedPercent;\n uint16 cashOutTaxRate;\n uint32 baseCurrency;\n bool pausePay;\n bool pauseCreditTransfers;\n bool allowOwnerMinting;\n bool allowSetCustomToken;\n bool allowTerminalMigration;\n bool allowSetTerminals;\n bool allowSetController;\n bool allowAddAccountingContext;\n bool allowAddPriceFeed;\n bool ownerMustSendPayouts;\n bool holdFees;\n bool useTotalSurplusForCashOuts;\n bool useDataHookForPay;\n bool useDataHookForCashOut;\n address dataHook;\n uint16 metadata;\n}\n" + }, + "src/structs/JBRulesetWithMetadata.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBRuleset} from \"./JBRuleset.sol\";\nimport {JBRulesetMetadata} from \"./JBRulesetMetadata.sol\";\n\n/// @custom:member ruleset The ruleset.\n/// @custom:member metadata The ruleset's metadata.\nstruct JBRulesetWithMetadata {\n JBRuleset ruleset;\n JBRulesetMetadata metadata;\n}\n" + }, + "src/structs/JBTerminalConfig.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {JBAccountingContext} from \"./JBAccountingContext.sol\";\nimport {IJBTerminal} from \"./../interfaces/IJBTerminal.sol\";\n\n/// @custom:member terminal The terminal to configure.\n/// @custom:member accountingContextsToAccept The accounting contexts to accept from the terminal.\nstruct JBTerminalConfig {\n IJBTerminal terminal;\n JBAccountingContext[] accountingContextsToAccept;\n}\n" + }, + "src/JBFeelessAddresses.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {Ownable} from \"@openzeppelin/contracts/access/Ownable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\nimport {IJBFeelessAddresses} from \"./interfaces/IJBFeelessAddresses.sol\";\n\n/// @notice Stores a list of addresses that shouldn't incur fees when sending or receiving payments.\ncontract JBFeelessAddresses is Ownable, IJBFeelessAddresses, IERC165 {\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice Check if the specified address is feeless.\n /// @dev Feeless addresses can receive payouts without incurring a fee.\n /// @dev Feeless addresses can use the surplus allowance without incurring a fee.\n /// @dev Feeless addresses can be the beneficary of cash outs without incurring a fee.\n /// @custom:param addr The address to check.\n mapping(address addr => bool) public override isFeeless;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param owner This contract's owner.\n constructor(address owner) Ownable(owner) {}\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Indicates whether this contract adheres to the specified interface.\n /// @dev See {IERC165-supportsInterface}.\n /// @param interfaceId The ID of the interface to check for adherence to.\n /// @return A flag indicating if the provided interface ID is supported.\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IJBFeelessAddresses).interfaceId || interfaceId == type(IERC165).interfaceId;\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Sets whether an address is feeless.\n /// @dev Can only be called by this contract's owner.\n /// @param addr The address to set as feeless or not feeless.\n /// @param flag Whether the address should be feeless (`true`) or not feeless (`false`).\n function setFeelessAddress(address addr, bool flag) external virtual override onlyOwner {\n isFeeless[addr] = flag;\n\n emit SetFeelessAddress({addr: addr, isFeeless: flag, caller: _msgSender()});\n }\n}\n" + }, + "src/interfaces/IJBFeelessAddresses.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IJBFeelessAddresses {\n event SetFeelessAddress(address indexed addr, bool indexed isFeeless, address caller);\n\n function isFeeless(address account) external view returns (bool);\n\n function setFeelessAddress(address account, bool flag) external;\n}\n" + }, + "src/JBTerminalStore.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {IJBController} from \"./interfaces/IJBController.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBPrices} from \"./interfaces/IJBPrices.sol\";\nimport {IJBRulesetDataHook} from \"./interfaces/IJBRulesetDataHook.sol\";\nimport {IJBRulesets} from \"./interfaces/IJBRulesets.sol\";\nimport {IJBTerminal} from \"./interfaces/IJBTerminal.sol\";\nimport {IJBTerminalStore} from \"./interfaces/IJBTerminalStore.sol\";\nimport {JBFixedPointNumber} from \"./libraries/JBFixedPointNumber.sol\";\nimport {JBCashOuts} from \"./libraries/JBCashOuts.sol\";\nimport {JBRulesetMetadataResolver} from \"./libraries/JBRulesetMetadataResolver.sol\";\nimport {JBSurplus} from \"./libraries/JBSurplus.sol\";\nimport {JBAccountingContext} from \"./structs/JBAccountingContext.sol\";\nimport {JBBeforePayRecordedContext} from \"./structs/JBBeforePayRecordedContext.sol\";\nimport {JBBeforeCashOutRecordedContext} from \"./structs/JBBeforeCashOutRecordedContext.sol\";\nimport {JBCashOutHookSpecification} from \"./structs/JBCashOutHookSpecification.sol\";\nimport {JBCurrencyAmount} from \"./structs/JBCurrencyAmount.sol\";\nimport {JBPayHookSpecification} from \"./structs/JBPayHookSpecification.sol\";\nimport {JBRuleset} from \"./structs/JBRuleset.sol\";\nimport {JBTokenAmount} from \"./structs/JBTokenAmount.sol\";\n\n/// @notice Manages all bookkeeping for inflows and outflows of funds from any terminal address.\n/// @dev This contract expects a project's controller to be an `IJBController`.\ncontract JBTerminalStore is IJBTerminalStore {\n // A library that parses the packed ruleset metadata into a friendlier format.\n using JBRulesetMetadataResolver for JBRuleset;\n\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBTerminalStore_InadequateControllerAllowance(uint256 amount, uint256 allowance);\n error JBTerminalStore_InadequateControllerPayoutLimit(uint256 amount, uint256 limit);\n error JBTerminalStore_InadequateTerminalStoreBalance(uint256 amount, uint256 balance);\n error JBTerminalStore_InsufficientTokens(uint256 count, uint256 totalSupply);\n error JBTerminalStore_InvalidAmountToForwardHook(uint256 amount, uint256 paidAmount);\n error JBTerminalStore_RulesetNotFound();\n error JBTerminalStore_RulesetPaymentPaused();\n error JBTerminalStore_TerminalMigrationNotAllowed();\n\n //*********************************************************************//\n // -------------------------- internal constants --------------------- //\n //*********************************************************************//\n\n /// @notice Constrains `mulDiv` operations on fixed point numbers to a maximum number of decimal points of persisted\n /// fidelity.\n uint256 internal constant _MAX_FIXED_POINT_FIDELITY = 18;\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice The directory of terminals and controllers for projects.\n IJBDirectory public immutable override DIRECTORY;\n\n /// @notice The contract that exposes price feeds.\n IJBPrices public immutable override PRICES;\n\n /// @notice The contract storing and managing project rulesets.\n IJBRulesets public immutable override RULESETS;\n\n //*********************************************************************//\n // --------------------- public stored properties -------------------- //\n //*********************************************************************//\n\n /// @notice A project's balance of a specific token within a terminal.\n /// @dev The balance is represented as a fixed point number with the same amount of decimals as its relative\n /// terminal.\n /// @custom:param terminal The terminal to get the project's balance within.\n /// @custom:param projectId The ID of the project to get the balance of.\n /// @custom:param token The token to get the balance for.\n mapping(address terminal => mapping(uint256 projectId => mapping(address token => uint256))) public override\n balanceOf;\n\n /// @notice The currency-denominated amount of funds that a project has already paid out from its payout limit\n /// during the current ruleset for each terminal, in terms of the payout limit's currency.\n /// @dev Increases as projects pay out funds.\n /// @dev The used payout limit is represented as a fixed point number with the same amount of decimals as the\n /// terminal it applies to.\n /// @custom:param terminal The terminal the payout limit applies to.\n /// @custom:param projectId The ID of the project to get the used payout limit of.\n /// @custom:param token The token the payout limit applies to in the terminal.\n /// @custom:param rulesetCycleNumber The cycle number of the ruleset the payout limit was used during.\n /// @custom:param currency The currency the payout limit is in terms of.\n mapping(\n address terminal\n => mapping(\n uint256 projectId\n => mapping(\n address token => mapping(uint256 rulesetCycleNumber => mapping(uint256 currency => uint256))\n )\n )\n ) public override usedPayoutLimitOf;\n\n /// @notice The currency-denominated amounts of funds that a project has used from its surplus allowance during the\n /// current ruleset for each terminal, in terms of the surplus allowance's currency.\n /// @dev Increases as projects use their allowance.\n /// @dev The used surplus allowance is represented as a fixed point number with the same amount of decimals as the\n /// terminal it applies to.\n /// @custom:param terminal The terminal the surplus allowance applies to.\n /// @custom:param projectId The ID of the project to get the used surplus allowance of.\n /// @custom:param token The token the surplus allowance applies to in the terminal.\n /// @custom:param rulesetId The ID of the ruleset the surplus allowance was used during.\n /// @custom:param currency The currency the surplus allowance is in terms of.\n mapping(\n address terminal\n => mapping(\n uint256 projectId\n => mapping(address token => mapping(uint256 rulesetId => mapping(uint256 currency => uint256)))\n )\n ) public override usedSurplusAllowanceOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param directory A contract storing directories of terminals and controllers for each project.\n /// @param prices A contract that exposes price feeds.\n /// @param rulesets A contract storing and managing project rulesets.\n constructor(IJBDirectory directory, IJBPrices prices, IJBRulesets rulesets) {\n DIRECTORY = directory;\n PRICES = prices;\n RULESETS = rulesets;\n }\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's\n /// tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\n /// @param projectId The ID of the project whose project tokens would be cashed out.\n /// @param cashOutCount The number of project tokens that would be cashed out, as a fixed point number with 18\n /// decimals.\n /// @param totalSupply The total project token supply, as a fixed point number with 18 decimals.\n /// @param surplus The total terminal token surplus amount, as a fixed point number.\n /// @return The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same\n /// number of decimals as the provided `surplus`.\n function currentReclaimableSurplusOf(\n uint256 projectId,\n uint256 cashOutCount,\n uint256 totalSupply,\n uint256 surplus\n )\n external\n view\n override\n returns (uint256)\n {\n // If there's no surplus, nothing can be reclaimed.\n if (surplus == 0) return 0;\n\n // Can't cash out more tokens than are in the total supply.\n if (cashOutCount > totalSupply) return 0;\n\n // Get a reference to the project's current ruleset.\n JBRuleset memory ruleset = RULESETS.currentOf(projectId);\n\n // Return the amount of surplus terminal tokens that would be reclaimed.\n return JBCashOuts.cashOutFrom({\n surplus: surplus,\n cashOutCount: cashOutCount,\n totalSupply: totalSupply,\n cashOutTaxRate: ruleset.cashOutTaxRate()\n });\n }\n\n /// @notice Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a\n /// given number of tokens, based on the total token supply and total surplus.\n /// @dev The returned amount in terms of the specified `terminal`'s base currency.\n /// @dev The returned amount is represented as a fixed point number with the same amount of decimals as the\n /// specified terminal.\n /// @param projectId The ID of the project whose tokens would be cashed out.\n /// @param cashOutCount The number of tokens that would be cashed out, as a fixed point number with 18 decimals.\n /// @param terminals The terminals that would be cashed out from. If this is the zero address, surplus within all\n /// the\n /// project's terminals are considered.\n /// @param accountingContexts The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass\n /// an empty array to use all of the project's accounting contexts.\n /// @param decimals The number of decimals to include in the resulting fixed point number.\n /// @param currency The currency that the resulting number will be in terms of.\n /// @return The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount`\n /// tokens.\n function currentReclaimableSurplusOf(\n uint256 projectId,\n uint256 cashOutCount,\n IJBTerminal[] calldata terminals,\n JBAccountingContext[] calldata accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n override\n returns (uint256)\n {\n // Get a reference to the project's current ruleset.\n JBRuleset memory ruleset = RULESETS.currentOf(projectId);\n\n // Get the current surplus amount.\n // If a terminal wasn't provided, use the total surplus across all terminals. Otherwise,\n // get the `terminal`'s surplus.\n uint256 currentSurplus = JBSurplus.currentSurplusOf({\n projectId: projectId,\n terminals: terminals.length != 0 ? terminals : DIRECTORY.terminalsOf(projectId),\n accountingContexts: accountingContexts,\n decimals: decimals,\n currency: currency\n });\n\n // If there's no surplus, nothing can be reclaimed.\n if (currentSurplus == 0) return 0;\n\n // Get the project token's total supply.\n uint256 totalSupply =\n IJBController(address(DIRECTORY.controllerOf(projectId))).totalTokenSupplyWithReservedTokensOf(projectId);\n\n // Can't cash out more tokens than are in the total supply.\n if (cashOutCount > totalSupply) return 0;\n\n // Return the amount of surplus terminal tokens that would be reclaimed.\n return JBCashOuts.cashOutFrom({\n surplus: currentSurplus,\n cashOutCount: cashOutCount,\n totalSupply: totalSupply,\n cashOutTaxRate: ruleset.cashOutTaxRate()\n });\n }\n\n /// @notice Gets the current surplus amount in a terminal for a specified project.\n /// @dev The surplus is the amount of funds a project has in a terminal in excess of its payout limit.\n /// @dev The surplus is represented as a fixed point number with the same amount of decimals as the specified\n /// terminal.\n /// @param terminal The terminal the surplus is being calculated for.\n /// @param projectId The ID of the project to get surplus for.\n /// @param accountingContexts The accounting contexts of tokens whose balances should contribute to the surplus\n /// being calculated.\n /// @param currency The currency the resulting amount should be in terms of.\n /// @param decimals The number of decimals to expect in the resulting fixed point number.\n /// @return The current surplus amount the project has in the specified terminal.\n function currentSurplusOf(\n address terminal,\n uint256 projectId,\n JBAccountingContext[] calldata accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n override\n returns (uint256)\n {\n // Return the surplus during the project's current ruleset.\n return _surplusFrom({\n terminal: terminal,\n projectId: projectId,\n accountingContexts: accountingContexts,\n ruleset: RULESETS.currentOf(projectId),\n targetDecimals: decimals,\n targetCurrency: currency\n });\n }\n\n /// @notice Gets the current surplus amount for a specified project across all terminals.\n /// @param projectId The ID of the project to get the total surplus for.\n /// @param decimals The number of decimals that the fixed point surplus should include.\n /// @param currency The currency that the total surplus should be in terms of.\n /// @return The current total surplus amount that the project has across all terminals.\n function currentTotalSurplusOf(\n uint256 projectId,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n override\n returns (uint256)\n {\n return JBSurplus.currentSurplusOf({\n projectId: projectId,\n terminals: DIRECTORY.terminalsOf(projectId),\n accountingContexts: new JBAccountingContext[](0),\n decimals: decimals,\n currency: currency\n });\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice Gets a project's surplus amount in a terminal as measured by a given ruleset, across multiple accounting\n /// contexts.\n /// @dev This amount changes as the value of the balance changes in relation to the currency being used to measure\n /// various payout limits.\n /// @param terminal The terminal the surplus is being calculated for.\n /// @param projectId The ID of the project to get the surplus for.\n /// @param accountingContexts The accounting contexts of tokens whose balances should contribute to the surplus\n /// being calculated.\n /// @param ruleset The ID of the ruleset to base the surplus on.\n /// @param targetDecimals The number of decimals to include in the resulting fixed point number.\n /// @param targetCurrency The currency that the reported surplus is expected to be in terms of.\n /// @return surplus The surplus of funds in terms of `targetCurrency`, as a fixed point number with\n /// `targetDecimals` decimals.\n function _surplusFrom(\n address terminal,\n uint256 projectId,\n JBAccountingContext[] memory accountingContexts,\n JBRuleset memory ruleset,\n uint256 targetDecimals,\n uint256 targetCurrency\n )\n internal\n view\n returns (uint256 surplus)\n {\n // Keep a reference to the number of tokens being iterated on.\n uint256 numberOfTokenAccountingContexts = accountingContexts.length;\n\n // Add payout limits from each token.\n for (uint256 i; i < numberOfTokenAccountingContexts; i++) {\n uint256 tokenSurplus = _tokenSurplusFrom({\n terminal: terminal,\n projectId: projectId,\n accountingContext: accountingContexts[i],\n ruleset: ruleset,\n targetDecimals: targetDecimals,\n targetCurrency: targetCurrency\n });\n // Increment the surplus with any remaining balance.\n if (tokenSurplus > 0) surplus += tokenSurplus;\n }\n }\n\n /// @notice Get a project's surplus amount of a specific token in a given terminal as measured by a given ruleset\n /// (one specific accounting context).\n /// @dev This amount changes as the value of the balance changes in relation to the currency being used to measure\n /// the payout limits.\n /// @param terminal The terminal the surplus is being calculated for.\n /// @param projectId The ID of the project to get the surplus of.\n /// @param accountingContext The accounting context of the token whose balance should contribute to the surplus\n /// being measured.\n /// @param ruleset The ID of the ruleset to base the surplus calculation on.\n /// @param targetDecimals The number of decimals to include in the resulting fixed point number.\n /// @param targetCurrency The currency that the reported surplus is expected to be in terms of.\n /// @return surplus The surplus of funds in terms of `targetCurrency`, as a fixed point number with\n /// `targetDecimals` decimals.\n function _tokenSurplusFrom(\n address terminal,\n uint256 projectId,\n JBAccountingContext memory accountingContext,\n JBRuleset memory ruleset,\n uint256 targetDecimals,\n uint256 targetCurrency\n )\n internal\n view\n returns (uint256 surplus)\n {\n // Keep a reference to the balance.\n surplus = balanceOf[terminal][projectId][accountingContext.token];\n\n // If needed, adjust the decimals of the fixed point number to have the correct decimals.\n surplus = accountingContext.decimals == targetDecimals\n ? surplus\n : JBFixedPointNumber.adjustDecimals({\n value: surplus,\n decimals: accountingContext.decimals,\n targetDecimals: targetDecimals\n });\n\n // Add up all the balances.\n surplus = (surplus == 0 || accountingContext.currency == targetCurrency)\n ? surplus\n : mulDiv(\n surplus,\n 10 ** _MAX_FIXED_POINT_FIDELITY, // Use `_MAX_FIXED_POINT_FIDELITY` to keep as much of the\n // `_payoutLimitRemaining`'s fidelity as possible when converting.\n PRICES.pricePerUnitOf({\n projectId: projectId,\n pricingCurrency: accountingContext.currency,\n unitCurrency: targetCurrency,\n decimals: _MAX_FIXED_POINT_FIDELITY\n })\n );\n\n // Get a reference to the payout limit during the ruleset for the token.\n JBCurrencyAmount[] memory payoutLimits = IJBController(address(DIRECTORY.controllerOf(projectId)))\n .FUND_ACCESS_LIMITS().payoutLimitsOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n terminal: address(terminal),\n token: accountingContext.token\n });\n\n // Keep a reference to the number of payout limits being iterated on.\n uint256 numberOfPayoutLimits = payoutLimits.length;\n\n // Loop through each payout limit to determine the cumulative normalized payout limit remaining.\n for (uint256 i; i < numberOfPayoutLimits; i++) {\n JBCurrencyAmount memory payoutLimit = payoutLimits[i];\n\n // Set the payout limit value to the amount still available to pay out during the ruleset.\n payoutLimit.amount = uint224(\n payoutLimit.amount\n - usedPayoutLimitOf[terminal][projectId][accountingContext.token][ruleset.cycleNumber][payoutLimit\n .currency]\n );\n\n // Adjust the decimals of the fixed point number if needed to have the correct decimals.\n payoutLimit.amount = accountingContext.decimals == targetDecimals\n ? payoutLimit.amount\n : uint224(\n JBFixedPointNumber.adjustDecimals({\n value: payoutLimit.amount,\n decimals: accountingContext.decimals,\n targetDecimals: targetDecimals\n })\n );\n\n // Convert the `payoutLimit`'s amount to be in terms of the provided currency.\n payoutLimit.amount = payoutLimit.amount == 0 || payoutLimit.currency == targetCurrency\n ? payoutLimit.amount\n : uint224(\n mulDiv(\n payoutLimit.amount,\n 10 ** _MAX_FIXED_POINT_FIDELITY, // Use `_MAX_FIXED_POINT_FIDELITY` to keep as much of the\n // `payoutLimitRemaining`'s fidelity as possible when converting.\n PRICES.pricePerUnitOf({\n projectId: projectId,\n pricingCurrency: payoutLimit.currency,\n unitCurrency: targetCurrency,\n decimals: _MAX_FIXED_POINT_FIDELITY\n })\n )\n );\n\n // Decrement from the balance until it reaches zero.\n if (surplus > payoutLimit.amount) {\n surplus -= payoutLimit.amount;\n } else {\n return 0;\n }\n }\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Records funds being added to a project's balance.\n /// @param projectId The ID of the project which funds are being added to the balance of.\n /// @param token The token being added to the balance.\n /// @param amount The amount of terminal tokens added, as a fixed point number with the same amount of decimals as\n /// its relative terminal.\n function recordAddedBalanceFor(uint256 projectId, address token, uint256 amount) external override {\n // Increment the balance.\n balanceOf[msg.sender][projectId][token] = balanceOf[msg.sender][projectId][token] + amount;\n }\n\n /// @notice Records a cash out from a project.\n /// @dev Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has\n /// no\n /// data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being\n /// burned.\n /// @param holder The account that is cashing out tokens.\n /// @param projectId The ID of the project being cashing out from.\n /// @param cashOutCount The number of project tokens to cash out, as a fixed point number with 18 decimals.\n /// @param accountingContext The accounting context of the token being reclaimed by the cash out.\n /// @param balanceAccountingContexts The accounting contexts of the tokens whose balances should contribute to the\n /// surplus being reclaimed from.\n /// @param metadata Bytes to send to the data hook, if the project's current ruleset specifies one.\n /// @return ruleset The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will\n /// have a cash out tax rate provided by the cash out hook if applicable.\n /// @return reclaimAmount The amount of tokens reclaimed from the terminal, as a fixed point number with 18\n /// decimals.\n /// @return cashOutTaxRate The cash out tax rate influencing the reclaim amount.\n /// @return hookSpecifications A list of cash out hooks, including data and amounts to send to them. The terminal\n /// should fulfill these specifications.\n function recordCashOutFor(\n address holder,\n uint256 projectId,\n uint256 cashOutCount,\n JBAccountingContext calldata accountingContext,\n JBAccountingContext[] calldata balanceAccountingContexts,\n bytes memory metadata\n )\n external\n override\n returns (\n JBRuleset memory ruleset,\n uint256 reclaimAmount,\n uint256 cashOutTaxRate,\n JBCashOutHookSpecification[] memory hookSpecifications\n )\n {\n // Get a reference to the project's current ruleset.\n ruleset = RULESETS.currentOf(projectId);\n\n // Get the current surplus amount.\n // Use the local surplus if the ruleset specifies that it should be used. Otherwise, use the project's total\n // surplus across all of its terminals.\n uint256 currentSurplus = ruleset.useTotalSurplusForCashOuts()\n ? JBSurplus.currentSurplusOf({\n projectId: projectId,\n terminals: DIRECTORY.terminalsOf(projectId),\n accountingContexts: new JBAccountingContext[](0),\n decimals: accountingContext.decimals,\n currency: accountingContext.currency\n })\n : _surplusFrom({\n terminal: msg.sender,\n projectId: projectId,\n accountingContexts: balanceAccountingContexts,\n ruleset: ruleset,\n targetDecimals: accountingContext.decimals,\n targetCurrency: accountingContext.currency\n });\n\n // Get the total number of outstanding project tokens.\n uint256 totalSupply =\n IJBController(address(DIRECTORY.controllerOf(projectId))).totalTokenSupplyWithReservedTokensOf(projectId);\n\n // Can't cash out more tokens than are in the supply.\n if (cashOutCount > totalSupply) revert JBTerminalStore_InsufficientTokens(cashOutCount, totalSupply);\n\n // If the ruleset has a data hook which is enabled for cash outs, use it to derive a claim amount and memo.\n if (ruleset.useDataHookForCashOut() && ruleset.dataHook() != address(0)) {\n // Create the cash out context that'll be sent to the data hook.\n JBBeforeCashOutRecordedContext memory context = JBBeforeCashOutRecordedContext({\n terminal: msg.sender,\n holder: holder,\n projectId: uint56(projectId),\n rulesetId: ruleset.id,\n cashOutCount: cashOutCount,\n totalSupply: totalSupply,\n surplus: JBTokenAmount({\n token: accountingContext.token,\n value: currentSurplus,\n decimals: accountingContext.decimals,\n currency: accountingContext.currency\n }),\n useTotalSurplus: ruleset.useTotalSurplusForCashOuts(),\n cashOutTaxRate: ruleset.cashOutTaxRate(),\n metadata: metadata\n });\n\n (cashOutTaxRate, cashOutCount, totalSupply, hookSpecifications) =\n IJBRulesetDataHook(ruleset.dataHook()).beforeCashOutRecordedWith(context);\n } else {\n cashOutTaxRate = ruleset.cashOutTaxRate();\n }\n\n if (currentSurplus != 0) {\n // Calculate reclaim amount using the current surplus amount.\n reclaimAmount = JBCashOuts.cashOutFrom({\n surplus: currentSurplus,\n cashOutCount: cashOutCount,\n totalSupply: totalSupply,\n cashOutTaxRate: cashOutTaxRate\n });\n }\n\n // Keep a reference to the amount that should be added to the project's balance.\n uint256 balanceDiff = reclaimAmount;\n\n // Ensure that the specifications have valid amounts.\n if (hookSpecifications.length != 0) {\n // Keep a reference to the number of cash out hooks specified.\n uint256 numberOfSpecifications = hookSpecifications.length;\n\n // Loop through each specification.\n for (uint256 i; i < numberOfSpecifications; i++) {\n // Get a reference to the specification's amount.\n uint256 specificationAmount = hookSpecifications[i].amount;\n\n // Ensure the amount is non-zero.\n if (specificationAmount != 0) {\n // Increment the total amount being subtracted from the balance.\n balanceDiff += specificationAmount;\n }\n }\n }\n\n // The amount being reclaimed must be within the project's balance.\n if (balanceDiff > balanceOf[msg.sender][projectId][accountingContext.token]) {\n revert JBTerminalStore_InadequateTerminalStoreBalance(\n balanceDiff, balanceOf[msg.sender][projectId][accountingContext.token]\n );\n }\n\n // Remove the reclaimed funds from the project's balance.\n if (balanceDiff != 0) {\n unchecked {\n balanceOf[msg.sender][projectId][accountingContext.token] =\n balanceOf[msg.sender][projectId][accountingContext.token] - balanceDiff;\n }\n }\n }\n\n /// @notice Records a payment to a project.\n /// @dev Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no\n /// data hook, mints tokens in proportion with the amount paid.\n /// @param payer The address that made the payment to the terminal.\n /// @param amount The amount of tokens being paid. Includes the token being paid, their value, the number of\n /// decimals included, and the currency of the amount.\n /// @param projectId The ID of the project being paid.\n /// @param beneficiary The address that should be the beneficiary of anything the payment yields (including project\n /// tokens minted by the payment).\n /// @param metadata Bytes to send to the data hook, if the project's current ruleset specifies one.\n /// @return ruleset The ruleset the payment was made during, as a `JBRuleset` struct.\n /// @return tokenCount The number of project tokens that were minted, as a fixed point number with 18 decimals.\n /// @return hookSpecifications A list of pay hooks, including data and amounts to send to them. The terminal should\n /// fulfill these specifications.\n function recordPaymentFrom(\n address payer,\n JBTokenAmount calldata amount,\n uint256 projectId,\n address beneficiary,\n bytes calldata metadata\n )\n external\n override\n returns (JBRuleset memory ruleset, uint256 tokenCount, JBPayHookSpecification[] memory hookSpecifications)\n {\n // Get a reference to the project's current ruleset.\n ruleset = RULESETS.currentOf(projectId);\n\n // The project must have a ruleset.\n if (ruleset.cycleNumber == 0) revert JBTerminalStore_RulesetNotFound();\n\n // The ruleset must not have payments paused.\n if (ruleset.pausePay()) revert JBTerminalStore_RulesetPaymentPaused();\n\n // The weight according to which new tokens are to be minted, as a fixed point number with 18 decimals.\n uint256 weight;\n\n // If the ruleset has a data hook enabled for payments, use it to derive a weight and memo.\n if (ruleset.useDataHookForPay() && ruleset.dataHook() != address(0)) {\n // Create the pay context that'll be sent to the data hook.\n JBBeforePayRecordedContext memory context = JBBeforePayRecordedContext({\n terminal: msg.sender,\n payer: payer,\n amount: amount,\n projectId: uint56(projectId),\n rulesetId: ruleset.id,\n beneficiary: beneficiary,\n weight: ruleset.weight,\n reservedPercent: ruleset.reservedPercent(),\n metadata: metadata\n });\n\n (weight, hookSpecifications) = IJBRulesetDataHook(ruleset.dataHook()).beforePayRecordedWith(context);\n }\n // Otherwise use the ruleset's weight\n else {\n weight = ruleset.weight;\n }\n\n // Keep a reference to the amount that should be added to the project's balance.\n uint256 balanceDiff = amount.value;\n\n // Scoped section preventing stack too deep.\n {\n // Keep a reference to the number of hook specifications.\n uint256 numberOfSpecifications = hookSpecifications.length;\n\n // Ensure that the specifications have valid amounts.\n if (numberOfSpecifications != 0) {\n for (uint256 i; i < numberOfSpecifications; i++) {\n // Get a reference to the specification's amount.\n uint256 specifiedAmount = hookSpecifications[i].amount;\n\n // Ensure the amount is non-zero.\n if (specifiedAmount != 0) {\n // Can't send more to hook than was paid.\n if (specifiedAmount > balanceDiff) {\n revert JBTerminalStore_InvalidAmountToForwardHook(specifiedAmount, balanceDiff);\n }\n\n // Decrement the total amount being added to the local balance.\n balanceDiff -= specifiedAmount;\n }\n }\n }\n }\n\n // If there's no amount being recorded, there's nothing left to do.\n if (amount.value == 0) return (ruleset, 0, hookSpecifications);\n\n // Add the correct balance difference to the token balance of the project.\n if (balanceDiff != 0) {\n balanceOf[msg.sender][projectId][amount.token] =\n balanceOf[msg.sender][projectId][amount.token] + balanceDiff;\n }\n\n // If there's no weight, the token count must be 0, so there's nothing left to do.\n if (weight == 0) return (ruleset, 0, hookSpecifications);\n\n // If the terminal should base its weight on a currency other than the terminal's currency, determine the\n // factor. The weight is always a fixed point mumber with 18 decimals. To ensure this, the ratio should use the\n // same\n // number of decimals as the `amount`.\n uint256 weightRatio = amount.currency == ruleset.baseCurrency()\n ? 10 ** amount.decimals\n : PRICES.pricePerUnitOf({\n projectId: projectId,\n pricingCurrency: amount.currency,\n unitCurrency: ruleset.baseCurrency(),\n decimals: amount.decimals\n });\n\n // Find the number of tokens to mint, as a fixed point number with as many decimals as `weight` has.\n tokenCount = mulDiv(amount.value, weight, weightRatio);\n }\n\n /// @notice Records a payout from a project.\n /// @param projectId The ID of the project that is paying out funds.\n /// @param accountingContext The context of the token being paid out.\n /// @param amount The amount to pay out (use from the payout limit), as a fixed point number.\n /// @param currency The currency of the `amount`. This must match the project's current ruleset's currency.\n /// @return ruleset The ruleset the payout was made during, as a `JBRuleset` struct.\n /// @return amountPaidOut The amount of terminal tokens paid out, as a fixed point number with the same amount of\n /// decimals as its relative terminal.\n function recordPayoutFor(\n uint256 projectId,\n JBAccountingContext calldata accountingContext,\n uint256 amount,\n uint256 currency\n )\n external\n override\n returns (JBRuleset memory ruleset, uint256 amountPaidOut)\n {\n // Get a reference to the project's current ruleset.\n ruleset = RULESETS.currentOf(projectId);\n\n // Convert the amount to the balance's currency.\n amountPaidOut = (currency == accountingContext.currency)\n ? amount\n : mulDiv(\n amount,\n 10 ** _MAX_FIXED_POINT_FIDELITY, // Use `_MAX_FIXED_POINT_FIDELITY` to keep as much of the `_amount`'s\n // fidelity as possible when converting.\n PRICES.pricePerUnitOf({\n projectId: projectId,\n pricingCurrency: currency,\n unitCurrency: accountingContext.currency,\n decimals: _MAX_FIXED_POINT_FIDELITY\n })\n );\n\n // The amount being paid out must be available.\n if (amountPaidOut > balanceOf[msg.sender][projectId][accountingContext.token]) {\n revert JBTerminalStore_InadequateTerminalStoreBalance(\n amountPaidOut, balanceOf[msg.sender][projectId][accountingContext.token]\n );\n }\n\n // Removed the paid out funds from the project's token balance.\n unchecked {\n balanceOf[msg.sender][projectId][accountingContext.token] =\n balanceOf[msg.sender][projectId][accountingContext.token] - amountPaidOut;\n }\n\n // The new total amount which has been paid out during this ruleset.\n uint256 newUsedPayoutLimitOf =\n usedPayoutLimitOf[msg.sender][projectId][accountingContext.token][ruleset.cycleNumber][currency] + amount;\n\n // Store the new amount.\n usedPayoutLimitOf[msg.sender][projectId][accountingContext.token][ruleset.cycleNumber][currency] =\n newUsedPayoutLimitOf;\n\n // Amount must be within what is still available to pay out.\n uint256 payoutLimit = IJBController(address(DIRECTORY.controllerOf(projectId))).FUND_ACCESS_LIMITS()\n .payoutLimitOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n terminal: msg.sender,\n token: accountingContext.token,\n currency: currency\n });\n\n // Make sure the new used amount is within the payout limit.\n if (newUsedPayoutLimitOf > payoutLimit || payoutLimit == 0) {\n revert JBTerminalStore_InadequateControllerPayoutLimit(newUsedPayoutLimitOf, payoutLimit);\n }\n }\n\n /// @notice Records the migration of funds from this store.\n /// @param projectId The ID of the project being migrated.\n /// @param token The token being migrated.\n /// @return balance The project's current balance (which is being migrated), as a fixed point number with the same\n /// amount of decimals as its relative terminal.\n function recordTerminalMigration(uint256 projectId, address token) external override returns (uint256 balance) {\n // Get a reference to the project's current ruleset.\n JBRuleset memory ruleset = RULESETS.currentOf(projectId);\n\n // Terminal migration must be allowed.\n if (!ruleset.allowTerminalMigration()) {\n revert JBTerminalStore_TerminalMigrationNotAllowed();\n }\n\n // Return the current balance, which is the amount being migrated.\n balance = balanceOf[msg.sender][projectId][token];\n\n // Set the balance to 0.\n balanceOf[msg.sender][projectId][token] = 0;\n }\n\n /// @notice Records a use of a project's surplus allowance.\n /// @dev When surplus allowance is \"used\", it is taken out of the project's surplus within a terminal.\n /// @param projectId The ID of the project to use the surplus allowance of.\n /// @param accountingContext The accounting context of the token whose balances should contribute to the surplus\n /// allowance being reclaimed from.\n /// @param amount The amount to use from the surplus allowance, as a fixed point number.\n /// @param currency The currency of the `amount`. Must match the currency of the surplus allowance.\n /// @return ruleset The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\n /// @return usedAmount The amount of terminal tokens used, as a fixed point number with the same amount of decimals\n /// as its relative terminal.\n function recordUsedAllowanceOf(\n uint256 projectId,\n JBAccountingContext calldata accountingContext,\n uint256 amount,\n uint256 currency\n )\n external\n override\n returns (JBRuleset memory ruleset, uint256 usedAmount)\n {\n // Get a reference to the project's current ruleset.\n ruleset = RULESETS.currentOf(projectId);\n\n // Convert the amount to this store's terminal's token.\n usedAmount = currency == accountingContext.currency\n ? amount\n : mulDiv(\n amount,\n 10 ** _MAX_FIXED_POINT_FIDELITY, // Use `_MAX_FIXED_POINT_FIDELITY` to keep as much of the `amount`'s\n // fidelity as possible when converting.\n PRICES.pricePerUnitOf({\n projectId: projectId,\n pricingCurrency: currency,\n unitCurrency: accountingContext.currency,\n decimals: _MAX_FIXED_POINT_FIDELITY\n })\n );\n\n // Set the token being used as the only one to look for surplus within.\n JBAccountingContext[] memory accountingContexts = new JBAccountingContext[](1);\n accountingContexts[0] = accountingContext;\n\n uint256 surplus = _surplusFrom({\n terminal: msg.sender,\n projectId: projectId,\n accountingContexts: accountingContexts,\n ruleset: ruleset,\n targetDecimals: accountingContext.decimals,\n targetCurrency: accountingContext.currency\n });\n\n // The amount being used must be available in the surplus.\n if (usedAmount > surplus) revert JBTerminalStore_InadequateTerminalStoreBalance(usedAmount, surplus);\n\n // Update the project's balance.\n balanceOf[msg.sender][projectId][accountingContext.token] =\n balanceOf[msg.sender][projectId][accountingContext.token] - usedAmount;\n\n // Get a reference to the new used surplus allowance for this ruleset ID.\n uint256 newUsedSurplusAllowanceOf =\n usedSurplusAllowanceOf[msg.sender][projectId][accountingContext.token][ruleset.id][currency] + amount;\n\n // Store the incremented value.\n usedSurplusAllowanceOf[msg.sender][projectId][accountingContext.token][ruleset.id][currency] =\n newUsedSurplusAllowanceOf;\n\n // There must be sufficient surplus allowance available.\n uint256 surplusAllowance = IJBController(address(DIRECTORY.controllerOf(projectId))).FUND_ACCESS_LIMITS()\n .surplusAllowanceOf({\n projectId: projectId,\n rulesetId: ruleset.id,\n terminal: msg.sender,\n token: accountingContext.token,\n currency: currency\n });\n\n // Make sure the new used amount is within the allowance.\n if (newUsedSurplusAllowanceOf > surplusAllowance || surplusAllowance == 0) {\n revert JBTerminalStore_InadequateControllerAllowance(newUsedSurplusAllowanceOf, surplusAllowance);\n }\n }\n}\n" + }, + "src/interfaces/IJBTerminalStore.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBDirectory} from \"./IJBDirectory.sol\";\nimport {IJBPrices} from \"./IJBPrices.sol\";\nimport {IJBRulesets} from \"./IJBRulesets.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {JBAccountingContext} from \"./../structs/JBAccountingContext.sol\";\nimport {JBCashOutHookSpecification} from \"./../structs/JBCashOutHookSpecification.sol\";\nimport {JBPayHookSpecification} from \"./../structs/JBPayHookSpecification.sol\";\nimport {JBRuleset} from \"./../structs/JBRuleset.sol\";\nimport {JBTokenAmount} from \"./../structs/JBTokenAmount.sol\";\n\ninterface IJBTerminalStore {\n function DIRECTORY() external view returns (IJBDirectory);\n function PRICES() external view returns (IJBPrices);\n function RULESETS() external view returns (IJBRulesets);\n\n function balanceOf(address terminal, uint256 projectId, address token) external view returns (uint256);\n function usedPayoutLimitOf(\n address terminal,\n uint256 projectId,\n address token,\n uint256 rulesetCycleNumber,\n uint256 currency\n )\n external\n view\n returns (uint256);\n function usedSurplusAllowanceOf(\n address terminal,\n uint256 projectId,\n address token,\n uint256 rulesetId,\n uint256 currency\n )\n external\n view\n returns (uint256);\n\n function currentReclaimableSurplusOf(\n uint256 projectId,\n uint256 tokenCount,\n uint256 totalSupply,\n uint256 surplus\n )\n external\n view\n returns (uint256);\n\n function currentReclaimableSurplusOf(\n uint256 projectId,\n uint256 cashOutCount,\n IJBTerminal[] calldata terminals,\n JBAccountingContext[] calldata accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n returns (uint256);\n function currentSurplusOf(\n address terminal,\n uint256 projectId,\n JBAccountingContext[] calldata accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n returns (uint256);\n function currentTotalSurplusOf(\n uint256 projectId,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n returns (uint256);\n\n function recordAddedBalanceFor(uint256 projectId, address token, uint256 amount) external;\n function recordPaymentFrom(\n address payer,\n JBTokenAmount memory amount,\n uint256 projectId,\n address beneficiary,\n bytes calldata metadata\n )\n external\n returns (JBRuleset memory ruleset, uint256 tokenCount, JBPayHookSpecification[] memory hookSpecifications);\n function recordPayoutFor(\n uint256 projectId,\n JBAccountingContext calldata accountingContext,\n uint256 amount,\n uint256 currency\n )\n external\n returns (JBRuleset memory ruleset, uint256 amountPaidOut);\n function recordCashOutFor(\n address holder,\n uint256 projectId,\n uint256 cashOutCount,\n JBAccountingContext calldata accountingContext,\n JBAccountingContext[] calldata balanceAccountingContexts,\n bytes calldata metadata\n )\n external\n returns (\n JBRuleset memory ruleset,\n uint256 reclaimAmount,\n uint256 cashOutTaxRate,\n JBCashOutHookSpecification[] memory hookSpecifications\n );\n function recordTerminalMigration(uint256 projectId, address token) external returns (uint256 balance);\n function recordUsedAllowanceOf(\n uint256 projectId,\n JBAccountingContext calldata accountingContext,\n uint256 amount,\n uint256 currency\n )\n external\n returns (JBRuleset memory ruleset, uint256 usedAmount);\n}\n" + }, + "src/libraries/JBCashOuts.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {JBConstants} from \"./JBConstants.sol\";\n\n/// @notice Cash out calculations.\nlibrary JBCashOuts {\n /// @notice Returns the amount of surplus terminal tokens which can be reclaimed based on the total surplus, the\n /// number of tokens being cashed out, the total token supply, and the ruleset's cash out tax rate.\n /// @param surplus The total amount of surplus terminal tokens.\n /// @param cashOutCount The number of tokens being cashed out, as a fixed point number with 18 decimals.\n /// @param totalSupply The total token supply, as a fixed point number with 18 decimals.\n /// @param cashOutTaxRate The current ruleset's cash out tax rate.\n /// @return reclaimableSurplus The amount of surplus tokens that can be reclaimed.\n function cashOutFrom(\n uint256 surplus,\n uint256 cashOutCount,\n uint256 totalSupply,\n uint256 cashOutTaxRate\n )\n internal\n pure\n returns (uint256)\n {\n // If the cash out tax rate is the max, no surplus can be reclaimed.\n if (cashOutTaxRate == JBConstants.MAX_CASH_OUT_TAX_RATE) return 0;\n\n // If the total supply is being cashed out, return the entire surplus.\n if (cashOutCount >= totalSupply) return surplus;\n\n // Get a reference to the linear proportion.\n uint256 base = mulDiv(surplus, cashOutCount, totalSupply);\n\n // These conditions are all part of the same curve.\n // Edge conditions are separated to minimize the operations performed in those cases.\n if (cashOutTaxRate == 0) {\n return base;\n }\n\n return mulDiv(\n base,\n (JBConstants.MAX_CASH_OUT_TAX_RATE - cashOutTaxRate) + mulDiv(cashOutTaxRate, cashOutCount, totalSupply),\n JBConstants.MAX_CASH_OUT_TAX_RATE\n );\n }\n}\n" + }, + "src/libraries/JBFixedPointNumber.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nlibrary JBFixedPointNumber {\n function adjustDecimals(uint256 value, uint256 decimals, uint256 targetDecimals) internal pure returns (uint256) {\n // If decimals need adjusting, multiply or divide the price by the decimal adjuster to get the normalized\n // result.\n if (targetDecimals == decimals) return value;\n else if (targetDecimals > decimals) return value * 10 ** (targetDecimals - decimals);\n else return value / 10 ** (decimals - targetDecimals);\n }\n}\n" + }, + "src/libraries/JBSurplus.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {IJBTerminal} from \"../interfaces/IJBTerminal.sol\";\nimport {JBAccountingContext} from \"../structs/JBAccountingContext.sol\";\n\n/// @notice Surplus calculations.\nlibrary JBSurplus {\n /// @notice Gets the total current surplus amount across all of a project's terminals.\n /// @dev This amount changes as the value of the balances changes in relation to the currency being used to measure\n /// the project's payout limits.\n /// @param projectId The ID of the project to get the total surplus for.\n /// @param terminals The terminals to look for surplus within.\n /// @param accountingContexts The accounting contexts to use to calculate the surplus.\n /// @param decimals The number of decimals that the fixed point surplus result should include.\n /// @param currency The currency that the surplus result should be in terms of.\n /// @return surplus The total surplus of a project's funds in terms of `currency`, as a fixed point number with the\n /// specified number of decimals.\n function currentSurplusOf(\n uint256 projectId,\n IJBTerminal[] memory terminals,\n JBAccountingContext[] memory accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n internal\n view\n returns (uint256 surplus)\n {\n // Keep a reference to the number of termainls.\n uint256 numberOfTerminals = terminals.length;\n\n // Add the current surplus for each terminal.\n for (uint256 i; i < numberOfTerminals; i++) {\n surplus += terminals[i].currentSurplusOf({\n projectId: projectId,\n accountingContexts: accountingContexts,\n decimals: decimals,\n currency: currency\n });\n }\n }\n}\n" + }, + "node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IEIP712} from \"./IEIP712.sol\";\n\n/// @title AllowanceTransfer\n/// @notice Handles ERC20 token permissions through signature based allowance setting and ERC20 token transfers by checking allowed amounts\n/// @dev Requires user's token approval on the Permit2 contract\ninterface IAllowanceTransfer is IEIP712 {\n /// @notice Thrown when an allowance on a token has expired.\n /// @param deadline The timestamp at which the allowed amount is no longer valid\n error AllowanceExpired(uint256 deadline);\n\n /// @notice Thrown when an allowance on a token has been depleted.\n /// @param amount The maximum amount allowed\n error InsufficientAllowance(uint256 amount);\n\n /// @notice Thrown when too many nonces are invalidated.\n error ExcessiveInvalidation();\n\n /// @notice Emits an event when the owner successfully invalidates an ordered nonce.\n event NonceInvalidation(\n address indexed owner, address indexed token, address indexed spender, uint48 newNonce, uint48 oldNonce\n );\n\n /// @notice Emits an event when the owner successfully sets permissions on a token for the spender.\n event Approval(\n address indexed owner, address indexed token, address indexed spender, uint160 amount, uint48 expiration\n );\n\n /// @notice Emits an event when the owner successfully sets permissions using a permit signature on a token for the spender.\n event Permit(\n address indexed owner,\n address indexed token,\n address indexed spender,\n uint160 amount,\n uint48 expiration,\n uint48 nonce\n );\n\n /// @notice Emits an event when the owner sets the allowance back to 0 with the lockdown function.\n event Lockdown(address indexed owner, address token, address spender);\n\n /// @notice The permit data for a token\n struct PermitDetails {\n // ERC20 token address\n address token;\n // the maximum amount allowed to spend\n uint160 amount;\n // timestamp at which a spender's token allowances become invalid\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice The permit message signed for a single token allowance\n struct PermitSingle {\n // the permit data for a single token alownce\n PermitDetails details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The permit message signed for multiple token allowances\n struct PermitBatch {\n // the permit data for multiple token allowances\n PermitDetails[] details;\n // address permissioned on the allowed tokens\n address spender;\n // deadline on the permit signature\n uint256 sigDeadline;\n }\n\n /// @notice The saved permissions\n /// @dev This info is saved per owner, per token, per spender and all signed over in the permit message\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n struct PackedAllowance {\n // amount allowed\n uint160 amount;\n // permission expiry\n uint48 expiration;\n // an incrementing value indexed per owner,token,and spender for each signature\n uint48 nonce;\n }\n\n /// @notice A token spender pair.\n struct TokenSpenderPair {\n // the token the spender is approved\n address token;\n // the spender address\n address spender;\n }\n\n /// @notice Details for a token transfer.\n struct AllowanceTransferDetails {\n // the owner of the token\n address from;\n // the recipient of the token\n address to;\n // the amount of the token\n uint160 amount;\n // the token to be transferred\n address token;\n }\n\n /// @notice A mapping from owner address to token address to spender address to PackedAllowance struct, which contains details and conditions of the approval.\n /// @notice The mapping is indexed in the above order see: allowance[ownerAddress][tokenAddress][spenderAddress]\n /// @dev The packed slot holds the allowed amount, expiration at which the allowed amount is no longer valid, and current nonce thats updated on any signature based approvals.\n function allowance(address user, address token, address spender)\n external\n view\n returns (uint160 amount, uint48 expiration, uint48 nonce);\n\n /// @notice Approves the spender to use up to amount of the specified token up until the expiration\n /// @param token The token to approve\n /// @param spender The spender address to approve\n /// @param amount The approved amount of the token\n /// @param expiration The timestamp at which the approval is no longer valid\n /// @dev The packed allowance also holds a nonce, which will stay unchanged in approve\n /// @dev Setting amount to type(uint160).max sets an unlimited approval\n function approve(address token, address spender, uint160 amount, uint48 expiration) external;\n\n /// @notice Permit a spender to a given amount of the owners token via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitSingle Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitSingle memory permitSingle, bytes calldata signature) external;\n\n /// @notice Permit a spender to the signed amounts of the owners tokens via the owner's EIP-712 signature\n /// @dev May fail if the owner's nonce was invalidated in-flight by invalidateNonce\n /// @param owner The owner of the tokens being approved\n /// @param permitBatch Data signed over by the owner specifying the terms of approval\n /// @param signature The owner's signature over the permit data\n function permit(address owner, PermitBatch memory permitBatch, bytes calldata signature) external;\n\n /// @notice Transfer approved tokens from one address to another\n /// @param from The address to transfer from\n /// @param to The address of the recipient\n /// @param amount The amount of the token to transfer\n /// @param token The token address to transfer\n /// @dev Requires the from address to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(address from, address to, uint160 amount, address token) external;\n\n /// @notice Transfer approved tokens in a batch\n /// @param transferDetails Array of owners, recipients, amounts, and tokens for the transfers\n /// @dev Requires the from addresses to have approved at least the desired amount\n /// of tokens to msg.sender.\n function transferFrom(AllowanceTransferDetails[] calldata transferDetails) external;\n\n /// @notice Enables performing a \"lockdown\" of the sender's Permit2 identity\n /// by batch revoking approvals\n /// @param approvals Array of approvals to revoke.\n function lockdown(TokenSpenderPair[] calldata approvals) external;\n\n /// @notice Invalidate nonces for a given (token, spender) pair\n /// @param token The token to invalidate nonces for\n /// @param spender The spender to invalidate nonces for\n /// @param newNonce The new nonce to set. Invalidates all nonces less than it.\n /// @dev Can't invalidate more than 2**16 nonces per transaction.\n function invalidateNonces(address token, address spender, uint48 newNonce) external;\n}\n" + }, + "node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\ninterface IEIP712 {\n function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n" + }, + "node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {ISignatureTransfer} from \"./ISignatureTransfer.sol\";\nimport {IAllowanceTransfer} from \"./IAllowanceTransfer.sol\";\n\n/// @notice Permit2 handles signature-based transfers in SignatureTransfer and allowance-based transfers in AllowanceTransfer.\n/// @dev Users must approve Permit2 before calling any of the transfer functions.\ninterface IPermit2 is ISignatureTransfer, IAllowanceTransfer {\n// IPermit2 unifies the two interfaces so users have maximal flexibility with their approval.\n}\n" + }, + "node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IEIP712} from \"./IEIP712.sol\";\n\n/// @title SignatureTransfer\n/// @notice Handles ERC20 token transfers through signature based actions\n/// @dev Requires user's token approval on the Permit2 contract\ninterface ISignatureTransfer is IEIP712 {\n /// @notice Thrown when the requested amount for a transfer is larger than the permissioned amount\n /// @param maxAmount The maximum amount a spender can request to transfer\n error InvalidAmount(uint256 maxAmount);\n\n /// @notice Thrown when the number of tokens permissioned to a spender does not match the number of tokens being transferred\n /// @dev If the spender does not need to transfer the number of tokens permitted, the spender can request amount 0 to be transferred\n error LengthMismatch();\n\n /// @notice Emits an event when the owner successfully invalidates an unordered nonce.\n event UnorderedNonceInvalidation(address indexed owner, uint256 word, uint256 mask);\n\n /// @notice The token and amount details for a transfer signed in the permit transfer signature\n struct TokenPermissions {\n // ERC20 token address\n address token;\n // the maximum amount that can be spent\n uint256 amount;\n }\n\n /// @notice The signed permit message for a single token transfer\n struct PermitTransferFrom {\n TokenPermissions permitted;\n // a unique value for every token owner's signature to prevent signature replays\n uint256 nonce;\n // deadline on the permit signature\n uint256 deadline;\n }\n\n /// @notice Specifies the recipient address and amount for batched transfers.\n /// @dev Recipients and amounts correspond to the index of the signed token permissions array.\n /// @dev Reverts if the requested amount is greater than the permitted signed amount.\n struct SignatureTransferDetails {\n // recipient address\n address to;\n // spender requested amount\n uint256 requestedAmount;\n }\n\n /// @notice Used to reconstruct the signed permit message for multiple token transfers\n /// @dev Do not need to pass in spender address as it is required that it is msg.sender\n /// @dev Note that a user still signs over a spender address\n struct PermitBatchTransferFrom {\n // the tokens and corresponding amounts permitted for a transfer\n TokenPermissions[] permitted;\n // a unique value for every token owner's signature to prevent signature replays\n uint256 nonce;\n // deadline on the permit signature\n uint256 deadline;\n }\n\n /// @notice A map from token owner address and a caller specified word index to a bitmap. Used to set bits in the bitmap to prevent against signature replay protection\n /// @dev Uses unordered nonces so that permit messages do not need to be spent in a certain order\n /// @dev The mapping is indexed first by the token owner, then by an index specified in the nonce\n /// @dev It returns a uint256 bitmap\n /// @dev The index, or wordPosition is capped at type(uint248).max\n function nonceBitmap(address, uint256) external view returns (uint256);\n\n /// @notice Transfers a token using a signed permit message\n /// @dev Reverts if the requested amount is greater than the permitted signed amount\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails The spender's requested transfer details for the permitted token\n /// @param signature The signature to verify\n function permitTransferFrom(\n PermitTransferFrom memory permit,\n SignatureTransferDetails calldata transferDetails,\n address owner,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers a token using a signed permit message\n /// @notice Includes extra data provided by the caller to verify signature over\n /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n /// @dev Reverts if the requested amount is greater than the permitted signed amount\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails The spender's requested transfer details for the permitted token\n /// @param witness Extra data to include when checking the user signature\n /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n /// @param signature The signature to verify\n function permitWitnessTransferFrom(\n PermitTransferFrom memory permit,\n SignatureTransferDetails calldata transferDetails,\n address owner,\n bytes32 witness,\n string calldata witnessTypeString,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers multiple tokens using a signed permit message\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n /// @param signature The signature to verify\n function permitTransferFrom(\n PermitBatchTransferFrom memory permit,\n SignatureTransferDetails[] calldata transferDetails,\n address owner,\n bytes calldata signature\n ) external;\n\n /// @notice Transfers multiple tokens using a signed permit message\n /// @dev The witness type string must follow EIP712 ordering of nested structs and must include the TokenPermissions type definition\n /// @notice Includes extra data provided by the caller to verify signature over\n /// @param permit The permit data signed over by the owner\n /// @param owner The owner of the tokens to transfer\n /// @param transferDetails Specifies the recipient and requested amount for the token transfer\n /// @param witness Extra data to include when checking the user signature\n /// @param witnessTypeString The EIP-712 type definition for remaining string stub of the typehash\n /// @param signature The signature to verify\n function permitWitnessTransferFrom(\n PermitBatchTransferFrom memory permit,\n SignatureTransferDetails[] calldata transferDetails,\n address owner,\n bytes32 witness,\n string calldata witnessTypeString,\n bytes calldata signature\n ) external;\n\n /// @notice Invalidates the bits specified in mask for the bitmap at the word position\n /// @dev The wordPos is maxed at type(uint248).max\n /// @param wordPos A number to index the nonceBitmap at\n /// @param mask A bitmap masked against msg.sender's current bitmap at the word position\n function invalidateUnorderedNonces(uint256 wordPos, uint256 mask) external;\n}\n" + }, + "src/JBMultiTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.23;\n\nimport {JBPermissionIds} from \"@bananapus/permission-ids/src/JBPermissionIds.sol\";\nimport {ERC2771Context} from \"@openzeppelin/contracts/metatx/ERC2771Context.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\nimport {SafeERC20} from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\nimport {IAllowanceTransfer} from \"@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\";\nimport {IPermit2} from \"@uniswap/permit2/src/interfaces/IPermit2.sol\";\n\nimport {JBPermissioned} from \"./abstract/JBPermissioned.sol\";\nimport {IJBCashOutTerminal} from \"./interfaces/IJBCashOutTerminal.sol\";\nimport {IJBController} from \"./interfaces/IJBController.sol\";\nimport {IJBDirectory} from \"./interfaces/IJBDirectory.sol\";\nimport {IJBFeelessAddresses} from \"./interfaces/IJBFeelessAddresses.sol\";\nimport {IJBFeeTerminal} from \"./interfaces/IJBFeeTerminal.sol\";\nimport {IJBMultiTerminal} from \"./interfaces/IJBMultiTerminal.sol\";\nimport {IJBPayoutTerminal} from \"./interfaces/IJBPayoutTerminal.sol\";\nimport {IJBPermissioned} from \"./interfaces/IJBPermissioned.sol\";\nimport {IJBPermissions} from \"./interfaces/IJBPermissions.sol\";\nimport {IJBPermitTerminal} from \"./interfaces/IJBPermitTerminal.sol\";\nimport {IJBProjects} from \"./interfaces/IJBProjects.sol\";\nimport {IJBRulesets} from \"./interfaces/IJBRulesets.sol\";\nimport {IJBSplitHook} from \"./interfaces/IJBSplitHook.sol\";\nimport {IJBSplits} from \"./interfaces/IJBSplits.sol\";\nimport {IJBTerminal} from \"./interfaces/IJBTerminal.sol\";\nimport {IJBTerminalStore} from \"./interfaces/IJBTerminalStore.sol\";\nimport {IJBTokens} from \"./interfaces/IJBTokens.sol\";\nimport {JBConstants} from \"./libraries/JBConstants.sol\";\nimport {JBFees} from \"./libraries/JBFees.sol\";\nimport {JBMetadataResolver} from \"./libraries/JBMetadataResolver.sol\";\nimport {JBRulesetMetadataResolver} from \"./libraries/JBRulesetMetadataResolver.sol\";\nimport {JBAccountingContext} from \"./structs/JBAccountingContext.sol\";\nimport {JBAfterPayRecordedContext} from \"./structs/JBAfterPayRecordedContext.sol\";\nimport {JBAfterCashOutRecordedContext} from \"./structs/JBAfterCashOutRecordedContext.sol\";\nimport {JBCashOutHookSpecification} from \"./structs/JBCashOutHookSpecification.sol\";\nimport {JBFee} from \"./structs/JBFee.sol\";\nimport {JBPayHookSpecification} from \"./structs/JBPayHookSpecification.sol\";\nimport {JBRuleset} from \"./structs/JBRuleset.sol\";\nimport {JBSingleAllowance} from \"./structs/JBSingleAllowance.sol\";\nimport {JBSplit} from \"./structs/JBSplit.sol\";\nimport {JBSplitHookContext} from \"./structs/JBSplitHookContext.sol\";\nimport {JBTokenAmount} from \"./structs/JBTokenAmount.sol\";\n\n/// @notice `JBMultiTerminal` manages native/ERC-20 payments, cash outs, and surplus allowance usage for any number of\n/// projects. Terminals are the entry point for operations involving inflows and outflows of funds.\ncontract JBMultiTerminal is JBPermissioned, ERC2771Context, IJBMultiTerminal {\n // A library that parses the packed ruleset metadata into a friendlier format.\n using JBRulesetMetadataResolver for JBRuleset;\n\n // A library that adds default safety checks to ERC20 functionality.\n using SafeERC20 for IERC20;\n\n //*********************************************************************//\n // --------------------------- custom errors ------------------------- //\n //*********************************************************************//\n\n error JBMultiTerminal_AccountingContextAlreadySet(address token);\n error JBMultiTerminal_AddingAccountingContextNotAllowed();\n error JBMultiTerminal_FeeTerminalNotFound();\n error JBMultiTerminal_NoMsgValueAllowed(uint256 value);\n error JBMultiTerminal_OverflowAlert(uint256 value, uint256 limit);\n error JBMultiTerminal_PermitAllowanceNotEnough(uint256 amount, uint256 allowance);\n error JBMultiTerminal_RecipientProjectTerminalNotFound(uint256 projectId, address token);\n error JBMultiTerminal_SplitHookInvalid(IJBSplitHook hook);\n error JBMultiTerminal_TerminalTokensIncompatible();\n error JBMultiTerminal_TokenNotAccepted(address token);\n error JBMultiTerminal_UnderMinReturnedTokens(uint256 count, uint256 min);\n error JBMultiTerminal_UnderMinTokensPaidOut(uint256 amount, uint256 min);\n error JBMultiTerminal_UnderMinTokensReclaimed(uint256 amount, uint256 min);\n error JBMultiTerminal_ZeroAccountingContextDecimals();\n error JBMultiTerminal_ZeroAccountingContextCurrency();\n\n //*********************************************************************//\n // ------------------------- public constants ------------------------ //\n //*********************************************************************//\n\n /// @notice This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\n /// @dev Fees are charged on payouts to addresses and surplus allowance usage, as well as cash outs while the\n /// cash out tax rate is less than 100%.\n uint256 public constant override FEE = 25; // 2.5%\n\n //*********************************************************************//\n // ------------------------ internal constants ----------------------- //\n //*********************************************************************//\n\n /// @notice Project ID #1 receives fees. It should be the first project launched during the deployment process.\n uint256 internal constant _FEE_BENEFICIARY_PROJECT_ID = 1;\n\n /// @notice The number of seconds fees can be held for.\n uint256 internal constant _FEE_HOLDING_SECONDS = 2_419_200; // 28 days\n\n //*********************************************************************//\n // ---------------- public immutable stored properties --------------- //\n //*********************************************************************//\n\n /// @notice The directory of terminals and controllers for PROJECTS.\n IJBDirectory public immutable override DIRECTORY;\n\n /// @notice The contract that stores addresses that shouldn't incur fees when being paid towards or from.\n IJBFeelessAddresses public immutable override FEELESS_ADDRESSES;\n\n /// @notice The permit2 utility.\n IPermit2 public immutable override PERMIT2;\n\n /// @notice Mints ERC-721s that represent project ownership and transfers.\n IJBProjects public immutable override PROJECTS;\n\n /// @notice The contract storing and managing project rulesets.\n IJBRulesets public immutable override RULESETS;\n\n /// @notice The contract that stores splits for each project.\n IJBSplits public immutable override SPLITS;\n\n /// @notice The contract that stores and manages the terminal's data.\n IJBTerminalStore public immutable override STORE;\n\n /// @notice The contract storing and managing project rulesets.\n IJBTokens public immutable override TOKENS;\n\n //*********************************************************************//\n // --------------------- internal stored properties ------------------ //\n //*********************************************************************//\n\n /// @notice Context describing how a token is accounted for by a project.\n /// @custom:param projectId The ID of the project that the token accounting context applies to.\n /// @custom:param token The address of the token being accounted for.\n mapping(uint256 projectId => mapping(address token => JBAccountingContext)) internal _accountingContextForTokenOf;\n\n /// @notice A list of tokens accepted by each project.\n /// @custom:param projectId The ID of the project to get a list of accepted tokens for.\n mapping(uint256 projectId => JBAccountingContext[]) internal _accountingContextsOf;\n\n /// @notice Fees that are being held for each project.\n /// @dev Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.\n /// @dev Held fees can be processed at any time by this terminal's owner.\n /// @custom:param projectId The ID of the project that is holding fees.\n /// @custom:param token The token that the fees are held in.\n mapping(uint256 projectId => mapping(address token => JBFee[])) internal _heldFeesOf;\n\n /// @notice The next index to use when processing a next held fee.\n /// @custom:param projectId The ID of the project that is holding fees.\n /// @custom:param token The token that the fees are held in.\n mapping(uint256 projectId => mapping(address token => uint256)) internal _nextHeldFeeIndexOf;\n\n //*********************************************************************//\n // -------------------------- constructor ---------------------------- //\n //*********************************************************************//\n\n /// @param feelessAddresses A contract that stores addresses that shouldn't incur fees when being paid towards or\n /// from.\n /// @param permissions A contract storing permissions.\n /// @param projects A contract which mints ERC-721s that represent project ownership and transfers.\n /// @param splits A contract that stores splits for each project.\n /// @param store A contract that stores the terminal's data.\n /// @param permit2 A permit2 utility.\n /// @param trustedForwarder A trusted forwarder of transactions to this contract.\n constructor(\n IJBFeelessAddresses feelessAddresses,\n IJBPermissions permissions,\n IJBProjects projects,\n IJBSplits splits,\n IJBTerminalStore store,\n IJBTokens tokens,\n IPermit2 permit2,\n address trustedForwarder\n )\n JBPermissioned(permissions)\n ERC2771Context(trustedForwarder)\n {\n DIRECTORY = store.DIRECTORY();\n FEELESS_ADDRESSES = feelessAddresses;\n PROJECTS = projects;\n RULESETS = store.RULESETS();\n SPLITS = splits;\n STORE = store;\n TOKENS = tokens;\n PERMIT2 = permit2;\n }\n\n //*********************************************************************//\n // ------------------------- external views -------------------------- //\n //*********************************************************************//\n\n /// @notice A project's accounting context for a token.\n /// @dev See the `JBAccountingContext` struct for more information.\n /// @param projectId The ID of the project to get token accounting context of.\n /// @param token The token to check the accounting context of.\n /// @return The token's accounting context for the token.\n function accountingContextForTokenOf(\n uint256 projectId,\n address token\n )\n external\n view\n override\n returns (JBAccountingContext memory)\n {\n return _accountingContextForTokenOf[projectId][token];\n }\n\n /// @notice The tokens accepted by a project.\n /// @param projectId The ID of the project to get the accepted tokens of.\n /// @return tokenContexts The accounting contexts of the accepted tokens.\n function accountingContextsOf(uint256 projectId) external view override returns (JBAccountingContext[] memory) {\n return _accountingContextsOf[projectId];\n }\n\n /// @notice Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\n /// @dev This total surplus only includes tokens that the project accepts (as returned by\n /// `accountingContextsOf(...)`).\n /// @param projectId The ID of the project to get the current total surplus of.\n /// @param accountingContexts The accounting contexts to use to calculate the surplus. Pass an empty array to use\n /// all of the project's accounting contexts.\n /// @param decimals The number of decimals to include in the fixed point returned value.\n /// @param currency The currency to express the returned value in terms of.\n /// @return The current surplus amount the project has in this terminal, in terms of `currency` and with the\n /// specified number of decimals.\n function currentSurplusOf(\n uint256 projectId,\n JBAccountingContext[] memory accountingContexts,\n uint256 decimals,\n uint256 currency\n )\n external\n view\n override\n returns (uint256)\n {\n return STORE.currentSurplusOf({\n terminal: address(this),\n projectId: projectId,\n accountingContexts: accountingContexts.length != 0 ? accountingContexts : _accountingContextsOf[projectId],\n decimals: decimals,\n currency: currency\n });\n }\n\n /// @notice Fees that are being held for a project.\n /// @dev Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.\n /// @dev Held fees can be processed at any time by this terminal's owner.\n /// @param projectId The ID of the project that is holding fees.\n /// @param token The token that the fees are held in.\n function heldFeesOf(\n uint256 projectId,\n address token,\n uint256 count\n )\n external\n view\n override\n returns (JBFee[] memory heldFees)\n {\n // Keep a reference to the start index.\n uint256 startIndex = _nextHeldFeeIndexOf[projectId][token];\n\n // Get a reference to the number of held fees.\n uint256 numberOfHeldFees = _heldFeesOf[projectId][token].length;\n\n // If the start index is greater than or equal to the number of held fees, return 0.\n if (startIndex >= numberOfHeldFees) return new JBFee[](0);\n\n // If the start index plus the count is greater than the number of fees, set the count to the number of fees\n if (startIndex + count > numberOfHeldFees) count = numberOfHeldFees - startIndex;\n\n // Create a new array to hold the fees.\n heldFees = new JBFee[](count);\n\n // Copy the fees into the array.\n for (uint256 i; i < count; i++) {\n heldFees[i] = _heldFeesOf[projectId][token][startIndex + i];\n }\n }\n\n //*********************************************************************//\n // -------------------------- public views --------------------------- //\n //*********************************************************************//\n\n /// @notice Indicates whether this contract adheres to the specified interface.\n /// @dev See {IERC165-supportsInterface}.\n /// @param interfaceId The ID of the interface to check for adherence to.\n /// @return A flag indicating if the provided interface ID is supported.\n function supportsInterface(bytes4 interfaceId) public pure override returns (bool) {\n return interfaceId == type(IJBMultiTerminal).interfaceId || interfaceId == type(IJBPermissioned).interfaceId\n || interfaceId == type(IJBTerminal).interfaceId || interfaceId == type(IJBCashOutTerminal).interfaceId\n || interfaceId == type(IJBPayoutTerminal).interfaceId || interfaceId == type(IJBPermitTerminal).interfaceId\n || interfaceId == type(IJBMultiTerminal).interfaceId || interfaceId == type(IJBFeeTerminal).interfaceId\n || interfaceId == type(IERC165).interfaceId;\n }\n\n //*********************************************************************//\n // -------------------------- internal views ------------------------- //\n //*********************************************************************//\n\n /// @notice Checks this terminal's balance of a specific token.\n /// @param token The address of the token to get this terminal's balance of.\n /// @return This terminal's balance.\n function _balanceOf(address token) internal view returns (uint256) {\n // If the `token` is native, get the native token balance.\n return token == JBConstants.NATIVE_TOKEN ? address(this).balance : IERC20(token).balanceOf(address(this));\n }\n\n /// @dev `ERC-2771` specifies the context as being a single address (20 bytes).\n function _contextSuffixLength() internal view override(ERC2771Context, Context) returns (uint256) {\n return super._contextSuffixLength();\n }\n\n /// @notice Returns the current controller of a project.\n /// @param projectId The ID of the project to get the controller of.\n /// @return controller The project's controller.\n function _controllerOf(uint256 projectId) internal view returns (IJBController) {\n return IJBController(address(DIRECTORY.controllerOf(projectId)));\n }\n\n /// @notice Returns a flag indicating if interacting with an address should not incur fees.\n /// @param addr The address to check.\n /// @return A flag indicating if the address should not incur fees.\n function _isFeeless(address addr) internal view returns (bool) {\n return FEELESS_ADDRESSES.isFeeless(addr);\n }\n\n /// @notice The calldata. Preferred to use over `msg.data`.\n /// @return calldata The `msg.data` of this call.\n function _msgData() internal view override(ERC2771Context, Context) returns (bytes calldata) {\n return ERC2771Context._msgData();\n }\n\n /// @notice The message's sender. Preferred to use over `msg.sender`.\n /// @return sender The address which sent this call.\n function _msgSender() internal view override(ERC2771Context, Context) returns (address sender) {\n return ERC2771Context._msgSender();\n }\n\n /// @notice The owner of a project.\n /// @param projectId The ID of the project to get the owner of.\n /// @return The owner of the project.\n function _ownerOf(uint256 projectId) internal view returns (address) {\n return PROJECTS.ownerOf(projectId);\n }\n\n /// @notice The primary terminal of a project for a token.\n /// @param projectId The ID of the project to get the primary terminal of.\n /// @param token The token to get the primary terminal of.\n /// @return The primary terminal of the project for the token.\n function _primaryTerminalOf(uint256 projectId, address token) internal view returns (IJBTerminal) {\n return DIRECTORY.primaryTerminalOf({projectId: projectId, token: token});\n }\n\n //*********************************************************************//\n // ---------------------- external transactions ---------------------- //\n //*********************************************************************//\n\n /// @notice Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in\n /// those contexts.\n /// @dev Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a\n /// project's controller can add accounting contexts for the project.\n /// @param projectId The ID of the project having to add accounting contexts for.\n /// @param accountingContexts The accounting contexts to add.\n function addAccountingContextsFor(\n uint256 projectId,\n JBAccountingContext[] calldata accountingContexts\n )\n external\n override\n {\n // Enforce permissions.\n _requirePermissionAllowingOverrideFrom({\n account: _ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.ADD_ACCOUNTING_CONTEXTS,\n alsoGrantAccessIf: _msgSender() == address(_controllerOf(projectId))\n });\n\n // Get a reference to the project's current ruleset.\n JBRuleset memory ruleset = RULESETS.currentOf(projectId);\n\n // Make sure that if there's a ruleset, it allows adding accounting contexts.\n if (ruleset.id != 0 && !ruleset.allowAddAccountingContext()) {\n revert JBMultiTerminal_AddingAccountingContextNotAllowed();\n }\n\n // Start accepting each token.\n for (uint256 i; i < accountingContexts.length; i++) {\n // Set the accounting context being iterated on.\n JBAccountingContext memory accountingContext = accountingContexts[i];\n\n // Get a storage reference to the currency accounting context for the token.\n JBAccountingContext storage storedAccountingContext =\n _accountingContextForTokenOf[projectId][accountingContext.token];\n\n // Make sure the token accounting context isn't already set.\n if (storedAccountingContext.token != address(0)) {\n revert JBMultiTerminal_AccountingContextAlreadySet(storedAccountingContext.token);\n }\n\n // Keep track of a flag indiciating if we know the provided decimals are incorrect.\n bool knownInvalidDecimals;\n\n // Check if the token is the native token and has the correct decimals\n if (accountingContext.token == JBConstants.NATIVE_TOKEN && accountingContext.decimals != 18) {\n knownInvalidDecimals = true;\n } else if (accountingContext.token != JBConstants.NATIVE_TOKEN) {\n // slither-disable-next-line calls-loop\n try IERC165(accountingContext.token).supportsInterface(type(IERC20Metadata).interfaceId) returns (\n bool doesSupport\n ) {\n // slither-disable-next-line calls-loop\n if (doesSupport && accountingContext.decimals != IERC20Metadata(accountingContext.token).decimals())\n {\n knownInvalidDecimals = true;\n }\n } catch {}\n }\n\n // Make sure the decimals are correct.\n if (knownInvalidDecimals) {\n revert JBMultiTerminal_ZeroAccountingContextDecimals();\n }\n\n // Make sure the currency is non-zero.\n if (accountingContext.currency == 0) revert JBMultiTerminal_ZeroAccountingContextCurrency();\n\n // Define the context from the config.\n storedAccountingContext.token = accountingContext.token;\n storedAccountingContext.decimals = accountingContext.decimals;\n storedAccountingContext.currency = accountingContext.currency;\n\n // Add the token to the list of accepted tokens of the project.\n _accountingContextsOf[projectId].push(storedAccountingContext);\n\n emit SetAccountingContext({projectId: projectId, context: storedAccountingContext, caller: _msgSender()});\n }\n }\n\n /// @notice Adds funds to a project's balance without minting tokens.\n /// @dev Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\n /// @param projectId The ID of the project to add funds to the balance of.\n /// @param amount The amount of tokens to add to the balance, as a fixed point number with the same number of\n /// decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\n /// @param token The token being added to the balance.\n /// @param shouldReturnHeldFees A flag indicating if held fees should be returned based on the amount being added.\n /// @param memo A memo to pass along to the emitted event.\n /// @param metadata Extra data to pass along to the emitted event.\n function addToBalanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n bool shouldReturnHeldFees,\n string calldata memo,\n bytes calldata metadata\n )\n external\n payable\n override\n {\n // Add to balance.\n _addToBalanceOf({\n projectId: projectId,\n token: token,\n amount: _acceptFundsFor(projectId, token, amount, metadata),\n shouldReturnHeldFees: shouldReturnHeldFees,\n memo: memo,\n metadata: metadata\n });\n }\n\n /// @notice Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger\n /// rules determined by the current ruleset's data hook and cash out hook.\n /// @dev Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out\n /// those tokens.\n /// @param holder The account whose tokens are being cashed out.\n /// @param projectId The ID of the project the project tokens belong to.\n /// @param cashOutCount The number of project tokens to cash out, as a fixed point number with 18 decimals.\n /// @param tokenToReclaim The token being reclaimed.\n /// @param minTokensReclaimed The minimum number of terminal tokens expected in return, as a fixed point number with\n /// the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less\n /// than this amount, the cash out is reverted.\n /// @param beneficiary The address to send the cashed out terminal tokens to, and to pass along to the ruleset's\n /// data hook and cash out hook if applicable.\n /// @param metadata Bytes to send along to the emitted event, as well as the data hook and cash out hook if\n /// applicable.\n /// @return reclaimAmount The amount of terminal tokens that the project tokens were cashed out for, as a fixed\n /// point\n /// number with 18 decimals.\n function cashOutTokensOf(\n address holder,\n uint256 projectId,\n uint256 cashOutCount,\n address tokenToReclaim,\n uint256 minTokensReclaimed,\n address payable beneficiary,\n bytes calldata metadata\n )\n external\n override\n returns (uint256 reclaimAmount)\n {\n // Enforce permissions.\n _requirePermissionFrom({account: holder, projectId: projectId, permissionId: JBPermissionIds.CASH_OUT_TOKENS});\n\n reclaimAmount = _cashOutTokensOf({\n holder: holder,\n projectId: projectId,\n cashOutCount: cashOutCount,\n tokenToReclaim: tokenToReclaim,\n beneficiary: beneficiary,\n metadata: metadata\n });\n\n // The amount being reclaimed must be at least as much as was expected.\n if (reclaimAmount < minTokensReclaimed) {\n revert JBMultiTerminal_UnderMinTokensReclaimed(reclaimAmount, minTokensReclaimed);\n }\n }\n\n /// @notice Executes a payout to a split.\n /// @dev Only accepts calls from this terminal itself.\n /// @param split The split to pay.\n /// @param projectId The ID of the project the split belongs to.\n /// @param token The address of the token being paid to the split.\n /// @param amount The total amount being paid to the split, as a fixed point number with the same number of\n /// decimals as this terminal.\n /// @return netPayoutAmount The amount sent to the split after subtracting fees.\n function executePayout(\n JBSplit calldata split,\n uint256 projectId,\n address token,\n uint256 amount,\n address originalMessageSender\n )\n external\n returns (uint256 netPayoutAmount)\n {\n // NOTICE: May only be called by this terminal itself.\n require(msg.sender == address(this));\n\n // By default, the net payout amount is the full amount. This will be adjusted if fees are taken.\n netPayoutAmount = amount;\n\n // If there's a split hook set, transfer to its `process` function.\n if (split.hook != IJBSplitHook(address(0))) {\n // Make sure that the address supports the split hook interface.\n if (!split.hook.supportsInterface(type(IJBSplitHook).interfaceId)) {\n revert JBMultiTerminal_SplitHookInvalid(split.hook);\n }\n\n // This payout is eligible for a fee since the funds are leaving this contract and the split hook isn't a\n // feeless address.\n if (!_isFeeless(address(split.hook))) {\n netPayoutAmount -= JBFees.feeAmountIn({amount: amount, feePercent: FEE});\n }\n\n // Create the context to send to the split hook.\n JBSplitHookContext memory context = JBSplitHookContext({\n token: token,\n amount: netPayoutAmount,\n decimals: _accountingContextForTokenOf[projectId][token].decimals,\n projectId: projectId,\n groupId: uint256(uint160(token)),\n split: split\n });\n\n // Trigger any inherited pre-transfer logic.\n // Get a reference to the amount being paid in `msg.value`.\n uint256 payValue = _beforeTransferTo({to: address(split.hook), token: token, amount: netPayoutAmount});\n\n // If this terminal's token is the native token, send it in `msg.value`.\n split.hook.processSplitWith{value: payValue}(context);\n\n // Otherwise, if a project is specified, make a payment to it.\n } else if (split.projectId != 0) {\n // Get a reference to the terminal being used.\n IJBTerminal terminal = _primaryTerminalOf({projectId: split.projectId, token: token});\n\n // The project must have a terminal to send funds to.\n if (terminal == IJBTerminal(address(0))) {\n revert JBMultiTerminal_RecipientProjectTerminalNotFound(split.projectId, token);\n }\n\n // This payout is eligible for a fee if the funds are leaving this contract and the receiving terminal isn't\n // a feelss address.\n if (terminal != this && !_isFeeless(address(terminal))) {\n netPayoutAmount -= JBFees.feeAmountIn({amount: amount, feePercent: FEE});\n }\n\n // Send the `projectId` in the metadata as a referral.\n bytes memory metadata = bytes(abi.encodePacked(projectId));\n\n // Add to balance if preferred.\n if (split.preferAddToBalance) {\n _efficientAddToBalance({\n terminal: terminal,\n projectId: split.projectId,\n token: token,\n amount: netPayoutAmount,\n metadata: metadata\n });\n } else {\n // Keep a reference to the beneficiary of the payment.\n address beneficiary = split.beneficiary != address(0) ? split.beneficiary : originalMessageSender;\n\n _efficientPay({\n terminal: terminal,\n projectId: split.projectId,\n token: token,\n amount: netPayoutAmount,\n beneficiary: beneficiary,\n metadata: metadata\n });\n }\n } else {\n // If there's a beneficiary, send the funds directly to the beneficiary.\n // If there isn't a beneficiary, send the funds to the `_msgSender()`.\n address payable recipient =\n split.beneficiary != address(0) ? split.beneficiary : payable(originalMessageSender);\n\n // This payout is eligible for a fee since the funds are leaving this contract and the recipient isn't a\n // feeless address.\n if (!_isFeeless(recipient)) {\n netPayoutAmount -= JBFees.feeAmountIn({amount: amount, feePercent: FEE});\n }\n\n // If there's a beneficiary, send the funds directly to the beneficiary. Otherwise send to the\n // `_msgSender()`.\n _transferFrom({from: address(this), to: recipient, token: token, amount: netPayoutAmount});\n }\n }\n\n /// @notice Process a specified amount of fees for a project.\n /// @dev Only accepts calls from this terminal itself.\n /// @param projectId The ID of the project paying the fee.\n /// @param token The token the fee is being paid in.\n /// @param amount The fee amount, as a fixed point number with 18 decimals.\n /// @param beneficiary The address to mint tokens to (from the project which receives fees), and pass along to the\n /// ruleset's data hook and pay hook if applicable.\n /// @param feeTerminal The terminal that'll receive the fees.\n function executeProcessFee(\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n IJBTerminal feeTerminal\n )\n external\n {\n // NOTICE: May only be called by this terminal itself.\n require(msg.sender == address(this));\n\n if (address(feeTerminal) == address(0)) {\n revert JBMultiTerminal_FeeTerminalNotFound();\n }\n\n // Send the projectId in the metadata.\n bytes memory metadata = bytes(abi.encodePacked(projectId));\n\n _efficientPay({\n terminal: feeTerminal,\n projectId: _FEE_BENEFICIARY_PROJECT_ID,\n token: token,\n amount: amount,\n beneficiary: beneficiary,\n metadata: metadata\n });\n }\n\n /// @notice Transfer funds to an address.\n /// @dev Only accepts calls from this terminal itself.\n /// @param addr The address to transfer funds to.\n /// @param token The token to transfer.\n /// @param amount The amount of tokens to transfer.\n function executeTransferTo(address payable addr, address token, uint256 amount) external {\n // NOTICE: May only be called by this terminal itself.\n require(msg.sender == address(this));\n\n _transferFrom({from: address(this), to: addr, token: token, amount: amount});\n }\n\n /// @notice Migrate a project's funds and operations to a new terminal that accepts the same token type.\n /// @dev Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate\n /// the project's terminal.\n /// @param projectId The ID of the project being migrated.\n /// @param token The address of the token being migrated.\n /// @param to The terminal contract being migrated to, which will receive the project's funds and operations.\n /// @return balance The amount of funds that were migrated, as a fixed point number with the same amount of decimals\n /// as this terminal.\n function migrateBalanceOf(\n uint256 projectId,\n address token,\n IJBTerminal to\n )\n external\n override\n returns (uint256 balance)\n {\n // Enforce permissions.\n _requirePermissionFrom({\n account: _ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.MIGRATE_TERMINAL\n });\n\n // The terminal being migrated to must accept the same token as this terminal.\n if (to.accountingContextForTokenOf({projectId: projectId, token: token}).currency == 0) {\n revert JBMultiTerminal_TerminalTokensIncompatible();\n }\n\n // Record the migration in the store.\n // slither-disable-next-line reentrancy-events\n balance = STORE.recordTerminalMigration({projectId: projectId, token: token});\n\n emit MigrateTerminal({projectId: projectId, token: token, to: to, amount: balance, caller: _msgSender()});\n\n // Transfer the balance if needed.\n if (balance != 0) {\n // Trigger any inherited pre-transfer logic.\n // If this terminal's token is the native token, send it in `msg.value`.\n // slither-disable-next-line reentrancy-events\n uint256 payValue = _beforeTransferTo({to: address(to), token: token, amount: balance});\n\n // Withdraw the balance to transfer to the new terminal;\n // slither-disable-next-line reentrancy-events\n to.addToBalanceOf{value: payValue}({\n projectId: projectId,\n token: token,\n amount: balance,\n shouldReturnHeldFees: false,\n memo: \"\",\n metadata: bytes(\"\")\n });\n }\n }\n\n /// @notice Pay a project with tokens.\n /// @param projectId The ID of the project being paid.\n /// @param amount The amount of terminal tokens being received, as a fixed point number with the same number of\n /// decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its\n /// place.\n /// @param token The token being paid.\n /// @param beneficiary The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if\n /// applicable.\n /// @param minReturnedTokens The minimum number of project tokens expected in return for this payment, as a fixed\n /// point number with the same number of decimals as this terminal. If the amount of tokens minted for the\n /// beneficiary would be less than this amount, the payment is reverted.\n /// @param memo A memo to pass along to the emitted event.\n /// @param metadata Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\n /// @return beneficiaryTokenCount The number of tokens minted to the beneficiary, as a fixed point number with 18\n /// decimals.\n function pay(\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n uint256 minReturnedTokens,\n string calldata memo,\n bytes calldata metadata\n )\n external\n payable\n override\n returns (uint256 beneficiaryTokenCount)\n {\n // Get a reference to the beneficiary's balance before the payment.\n uint256 beneficiaryBalanceBefore = TOKENS.totalBalanceOf({holder: beneficiary, projectId: projectId});\n\n // Pay the project.\n _pay({\n projectId: projectId,\n token: token,\n amount: _acceptFundsFor(projectId, token, amount, metadata),\n payer: _msgSender(),\n beneficiary: beneficiary,\n memo: memo,\n metadata: metadata\n });\n\n // Get a reference to the beneficiary's balance after the payment.\n uint256 beneficiaryBalanceAfter = TOKENS.totalBalanceOf({holder: beneficiary, projectId: projectId});\n\n // Set the beneficiary token count.\n if (beneficiaryBalanceAfter > beneficiaryBalanceBefore) {\n beneficiaryTokenCount = beneficiaryBalanceAfter - beneficiaryBalanceBefore;\n }\n\n // The token count for the beneficiary must be greater than or equal to the specified minimum.\n if (beneficiaryTokenCount < minReturnedTokens) {\n revert JBMultiTerminal_UnderMinReturnedTokens(beneficiaryTokenCount, minReturnedTokens);\n }\n }\n\n /// @notice Process any fees that are being held for the project.\n /// @param projectId The ID of the project to process held fees for.\n /// @param token The token to process held fees for.\n /// @param count The number of fees to process.\n function processHeldFeesOf(uint256 projectId, address token, uint256 count) external override {\n // Keep a reference to the start index.\n uint256 startIndex = _nextHeldFeeIndexOf[projectId][token];\n\n // Get a reference to the project's held fees.\n uint256 numberOfHeldFees = _heldFeesOf[projectId][token].length;\n\n // If the start index is greater than or equal to the number of held fees, return.\n if (startIndex >= numberOfHeldFees) return;\n\n // Keep a reference to the terminal that'll receive the fees.\n IJBTerminal feeTerminal = _primaryTerminalOf({projectId: _FEE_BENEFICIARY_PROJECT_ID, token: token});\n\n // Calculate the number of iterations to perform.\n if (startIndex + count > numberOfHeldFees) count = numberOfHeldFees - startIndex;\n\n // Process each fee.\n for (uint256 i; i < count; i++) {\n // Keep a reference to the held fee being iterated on.\n JBFee memory heldFee = _heldFeesOf[projectId][token][startIndex + i];\n\n // Can't process fees that aren't yet unlocked. Fees unlock sequentially in the array, so nothing left to do\n // if the current fee isn't yet unlocked.\n if (heldFee.unlockTimestamp > block.timestamp) {\n // Restart at this index next time.\n if (i > 0) _nextHeldFeeIndexOf[projectId][token] = startIndex + i;\n return;\n }\n\n // Process the fee.\n // slither-disable-next-line reentrancy-no-eth\n _processFee({\n projectId: projectId,\n token: token,\n amount: JBFees.feeAmountIn({amount: heldFee.amount, feePercent: FEE}),\n beneficiary: heldFee.beneficiary,\n feeTerminal: feeTerminal,\n wasHeld: true\n });\n }\n\n // Restart at the next fee next time.\n _nextHeldFeeIndexOf[projectId][token] = startIndex + count;\n }\n\n /// @notice Sends payouts to a project's current payout split group, according to its ruleset, up to its current\n /// payout limit.\n /// @dev If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder\n /// is sent to the project's owner.\n /// @dev Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no\n /// `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can\n /// be used to incentivize calling this function.\n /// @dev payouts sent to addresses which aren't feeless incur the protocol fee.\n /// @dev Payouts a projects don't incur fees if its terminal is feeless.\n /// @param projectId The ID of the project having its payouts sent.\n /// @param token The token being sent.\n /// @param amount The total number of terminal tokens to send, as a fixed point number with same number of decimals\n /// as this terminal.\n /// @param currency The expected currency of the payouts being sent. Must match the currency of one of the\n /// project's current ruleset's payout limits.\n /// @param minTokensPaidOut The minimum number of terminal tokens that the `amount` should be worth (if expressed\n /// in terms of this terminal's currency), as a fixed point number with the same number of decimals as this\n /// terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\n /// @return amountPaidOut The total amount paid out.\n function sendPayoutsOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency,\n uint256 minTokensPaidOut\n )\n external\n override\n returns (uint256 amountPaidOut)\n {\n amountPaidOut = _sendPayoutsOf({projectId: projectId, token: token, amount: amount, currency: currency});\n\n // The amount being paid out must be at least as much as was expected.\n if (amountPaidOut < minTokensPaidOut) {\n revert JBMultiTerminal_UnderMinTokensPaidOut(amountPaidOut, minTokensPaidOut);\n }\n }\n\n /// @notice Allows a project to pay out funds from its surplus up to the current surplus allowance.\n /// @dev Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the\n /// surplus allowance.\n /// @dev Incurs the protocol fee unless the caller is a feeless address.\n /// @param projectId The ID of the project to use the surplus allowance of.\n /// @param token The token being paid out from the surplus.\n /// @param amount The amount of terminal tokens to use from the project's current surplus allowance, as a fixed\n /// point number with the same amount of decimals as this terminal.\n /// @param currency The expected currency of the amount being paid out. Must match the currency of one of the\n /// project's current ruleset's surplus allowances.\n /// @param minTokensPaidOut The minimum number of terminal tokens that should be returned from the surplus allowance\n /// (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than\n /// this amount, the transaction is reverted.\n /// @param beneficiary The address to send the surplus funds to.\n /// @param feeBeneficiary The address to send the tokens resulting from paying the fee.\n /// @param memo A memo to pass along to the emitted event.\n /// @return netAmountPaidOut The number of tokens that were sent to the beneficiary, as a fixed point number with\n /// the same amount of decimals as the terminal.\n function useAllowanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency,\n uint256 minTokensPaidOut,\n address payable beneficiary,\n address payable feeBeneficiary,\n string calldata memo\n )\n external\n override\n returns (uint256 netAmountPaidOut)\n {\n // Enforce permissions.\n _requirePermissionFrom({\n account: _ownerOf(projectId),\n projectId: projectId,\n permissionId: JBPermissionIds.USE_ALLOWANCE\n });\n\n netAmountPaidOut = _useAllowanceOf({\n projectId: projectId,\n token: token,\n amount: amount,\n currency: currency,\n beneficiary: beneficiary,\n feeBeneficiary: feeBeneficiary,\n memo: memo\n });\n\n // The amount being withdrawn must be at least as much as was expected.\n if (netAmountPaidOut < minTokensPaidOut) {\n revert JBMultiTerminal_UnderMinTokensPaidOut(netAmountPaidOut, minTokensPaidOut);\n }\n }\n\n //*********************************************************************//\n // ------------------------ internal functions ----------------------- //\n //*********************************************************************//\n\n /// @notice Accepts an incoming token.\n /// @param projectId The ID of the project that the transfer is being accepted for.\n /// @param token The token being accepted.\n /// @param amount The number of tokens being accepted.\n /// @param metadata The metadata in which permit2 context is provided.\n /// @return amount The number of tokens which have been accepted.\n function _acceptFundsFor(\n uint256 projectId,\n address token,\n uint256 amount,\n bytes calldata metadata\n )\n internal\n returns (uint256)\n {\n // Make sure the project has an accounting context for the token being paid.\n if (_accountingContextForTokenOf[projectId][token].token == address(0)) {\n revert JBMultiTerminal_TokenNotAccepted(token);\n }\n\n // If the terminal's token is the native token, override `amount` with `msg.value`.\n if (token == JBConstants.NATIVE_TOKEN) return msg.value;\n\n // If the terminal's token is not native, revert if there is a non-zero `msg.value`.\n if (msg.value != 0) revert JBMultiTerminal_NoMsgValueAllowed(msg.value);\n\n // Unpack the allowance to use, if any, given by the frontend.\n (bool exists, bytes memory parsedMetadata) =\n JBMetadataResolver.getDataFor({id: JBMetadataResolver.getId(\"permit2\"), metadata: metadata});\n\n // Check if the metadata contains permit data.\n if (exists) {\n // Keep a reference to the allowance context parsed from the metadata.\n (JBSingleAllowance memory allowance) = abi.decode(parsedMetadata, (JBSingleAllowance));\n\n // Make sure the permit allowance is enough for this payment. If not we revert early.\n if (amount > allowance.amount) {\n revert JBMultiTerminal_PermitAllowanceNotEnough(amount, allowance.amount);\n }\n\n // Keep a reference to the permit rules.\n IAllowanceTransfer.PermitSingle memory permitSingle = IAllowanceTransfer.PermitSingle({\n details: IAllowanceTransfer.PermitDetails({\n token: token,\n amount: allowance.amount,\n expiration: allowance.expiration,\n nonce: allowance.nonce\n }),\n spender: address(this),\n sigDeadline: allowance.sigDeadline\n });\n\n // Set the allowance to `spend` tokens for the user.\n try PERMIT2.permit({owner: _msgSender(), permitSingle: permitSingle, signature: allowance.signature}) {}\n catch (bytes memory) {}\n }\n\n // Get a reference to the balance before receiving tokens.\n uint256 balanceBefore = _balanceOf(token);\n\n // Transfer tokens to this terminal from the msg sender.\n _transferFrom({from: _msgSender(), to: payable(address(this)), token: token, amount: amount});\n\n // The amount should reflect the change in balance.\n return _balanceOf(token) - balanceBefore;\n }\n\n /// @notice Adds funds to a project's balance without minting tokens.\n /// @param projectId The ID of the project to add funds to the balance of.\n /// @param token The address of the token being added to the project's balance.\n /// @param amount The amount of tokens to add as a fixed point number with the same number of decimals as this\n /// terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\n /// @param shouldReturnHeldFees A flag indicating if held fees should be returned based on the amount being added.\n /// @param memo A memo to pass along to the emitted event.\n /// @param metadata Extra data to pass along to the emitted event.\n function _addToBalanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n bool shouldReturnHeldFees,\n string memory memo,\n bytes memory metadata\n )\n internal\n {\n // Return held fees if desired. This mechanism means projects don't pay fees multiple times when funds go out of\n // and back into the protocol.\n uint256 returnedFees =\n shouldReturnHeldFees ? _returnHeldFees({projectId: projectId, token: token, amount: amount}) : 0;\n\n emit AddToBalance({\n projectId: projectId,\n amount: amount,\n returnedFees: returnedFees,\n memo: memo,\n metadata: metadata,\n caller: _msgSender()\n });\n\n // Record the added funds with any returned fees.\n _recordAddedBalanceFor({projectId: projectId, token: token, amount: amount + returnedFees});\n }\n\n /// @notice Logic to be triggered before transferring tokens from this terminal.\n /// @param to The address the transfer is going to.\n /// @param token The token being transferred.\n /// @param amount The number of tokens being transferred, as a fixed point number with the same number of decimals\n /// as this terminal.\n /// @return payValue The value to attach to the transaction being sent.\n function _beforeTransferTo(address to, address token, uint256 amount) internal returns (uint256) {\n // If the token is the native token, no allowance needed, and the full amount should be used as the payValue.\n if (token == JBConstants.NATIVE_TOKEN) return amount;\n\n // Otherwise, set the allowance, and the payValue should be 0.\n IERC20(token).safeIncreaseAllowance({spender: to, value: amount});\n return 0;\n }\n\n /// @notice Holders can cash out their tokens to reclaim some of a project's surplus, or to trigger rules determined\n /// by\n /// the project's current ruleset's data hook.\n /// @dev Only a token holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out\n /// those\n /// tokens.\n /// @param holder The account cashing out tokens.\n /// @param projectId The ID of the project whose tokens are being cashed out.\n /// @param cashOutCount The number of project tokens to cash out, as a fixed point number with 18 decimals.\n /// @param tokenToReclaim The address of the token which is being cashed out.\n /// @param beneficiary The address to send the reclaimed terminal tokens to.\n /// @param metadata Bytes to send along to the emitted event, as well as the data hook and cash out hook if\n /// applicable.\n /// @return reclaimAmount The number of terminal tokens reclaimed for the `beneficiary`, as a fixed point number\n /// with 18 decimals.\n function _cashOutTokensOf(\n address holder,\n uint256 projectId,\n uint256 cashOutCount,\n address tokenToReclaim,\n address payable beneficiary,\n bytes memory metadata\n )\n internal\n returns (uint256 reclaimAmount)\n {\n // Keep a reference to the ruleset the cash out is being made during.\n JBRuleset memory ruleset;\n\n // Keep a reference to the cash out hook specifications.\n JBCashOutHookSpecification[] memory hookSpecifications;\n\n // Keep a reference to the cash out tax rate being used.\n uint256 cashOutTaxRate;\n\n // Keep a reference to the accounting context of the token being reclaimed.\n JBAccountingContext memory accountingContext = _accountingContextForTokenOf[projectId][tokenToReclaim];\n\n // Scoped section prevents stack too deep.\n {\n JBAccountingContext[] memory balanceAccountingContexts = _accountingContextsOf[projectId];\n\n // Record the cash out.\n (ruleset, reclaimAmount, cashOutTaxRate, hookSpecifications) = STORE.recordCashOutFor({\n holder: holder,\n projectId: projectId,\n accountingContext: accountingContext,\n balanceAccountingContexts: balanceAccountingContexts,\n cashOutCount: cashOutCount,\n metadata: metadata\n });\n }\n\n // Burn the project tokens.\n if (cashOutCount != 0) {\n _controllerOf(projectId).burnTokensOf({\n holder: holder,\n projectId: projectId,\n tokenCount: cashOutCount,\n memo: \"\"\n });\n }\n\n // Keep a reference to the amount being reclaimed that is subject to fees.\n uint256 amountEligibleForFees;\n\n // Send the reclaimed funds to the beneficiary.\n if (reclaimAmount != 0) {\n // Determine if a fee should be taken. Fees are not taked if the cash out tax rate is zero,\n // if the beneficiary is feeless, or if the fee beneficiary doesn't accept the given token.\n if (!_isFeeless(beneficiary) && cashOutTaxRate != 0) {\n amountEligibleForFees += reclaimAmount;\n // Subtract the fee for the reclaimed amount.\n reclaimAmount -= JBFees.feeAmountIn({amount: reclaimAmount, feePercent: FEE});\n }\n\n // Subtract the fee from the reclaim amount.\n if (reclaimAmount != 0) {\n _transferFrom({from: address(this), to: beneficiary, token: tokenToReclaim, amount: reclaimAmount});\n }\n }\n\n // If the data hook returned cash out hook specifications, fulfill them.\n if (hookSpecifications.length != 0) {\n // Fulfill the cash out hook specifications.\n amountEligibleForFees += _fulfillCashOutHookSpecificationsFor({\n projectId: projectId,\n holder: holder,\n cashOutCount: cashOutCount,\n ruleset: ruleset,\n cashOutTaxRate: cashOutTaxRate,\n beneficiary: beneficiary,\n beneficiaryReclaimAmount: JBTokenAmount({\n token: tokenToReclaim,\n decimals: accountingContext.decimals,\n currency: accountingContext.currency,\n value: reclaimAmount\n }),\n specifications: hookSpecifications,\n metadata: metadata\n });\n }\n\n // Take the fee from all outbound reclaimings.\n amountEligibleForFees != 0\n ? _takeFeeFrom({\n projectId: projectId,\n token: tokenToReclaim,\n amount: amountEligibleForFees,\n beneficiary: beneficiary,\n shouldHoldFees: false\n })\n : 0;\n\n emit CashOutTokens({\n rulesetId: ruleset.id,\n rulesetCycleNumber: ruleset.cycleNumber,\n projectId: projectId,\n holder: holder,\n beneficiary: beneficiary,\n cashOutCount: cashOutCount,\n cashOutTaxRate: cashOutTaxRate,\n reclaimAmount: reclaimAmount,\n metadata: metadata,\n caller: _msgSender()\n });\n }\n\n /// @notice Fund a project either by calling this terminal's internal `addToBalance` function or by calling the\n /// recipient\n /// terminal's `addToBalance` function.\n /// @param terminal The terminal on which the project is expecting to receive funds.\n /// @param projectId The ID of the project being funded.\n /// @param token The token being used.\n /// @param amount The amount being funded, as a fixed point number with the amount of decimals that the terminal's\n /// accounting context specifies.\n /// @param metadata Additional metadata to include with the payment.\n function _efficientAddToBalance(\n IJBTerminal terminal,\n uint256 projectId,\n address token,\n uint256 amount,\n bytes memory metadata\n )\n internal\n {\n // Call the internal method if this terminal is being used.\n if (terminal == IJBTerminal(address(this))) {\n _addToBalanceOf({\n projectId: projectId,\n token: token,\n amount: amount,\n shouldReturnHeldFees: false,\n memo: \"\",\n metadata: metadata\n });\n } else {\n // Trigger any inherited pre-transfer logic.\n // Keep a reference to the amount that'll be paid as a `msg.value`.\n // slither-disable-next-line reentrancy-events\n uint256 payValue = _beforeTransferTo({to: address(terminal), token: token, amount: amount});\n\n // Add to balance.\n // If this terminal's token is the native token, send it in `msg.value`.\n terminal.addToBalanceOf{value: payValue}({\n projectId: projectId,\n token: token,\n amount: amount,\n shouldReturnHeldFees: false,\n memo: \"\",\n metadata: metadata\n });\n }\n }\n\n /// @notice Pay a project either by calling this terminal's internal `pay` function or by calling the recipient\n /// terminal's `pay` function.\n /// @param terminal The terminal on which the project is expecting to receive payments.\n /// @param projectId The ID of the project being paid.\n /// @param token The token being paid in.\n /// @param amount The amount being paid, as a fixed point number with the amount of decimals that the terminal's\n /// accounting context specifies.\n /// @param beneficiary The address to receive any platform tokens minted.\n /// @param metadata Additional metadata to include with the payment.\n function _efficientPay(\n IJBTerminal terminal,\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n bytes memory metadata\n )\n internal\n {\n if (terminal == IJBTerminal(address(this))) {\n _pay({\n projectId: projectId,\n token: token,\n amount: amount,\n payer: address(this),\n beneficiary: beneficiary,\n memo: \"\",\n metadata: metadata\n });\n } else {\n // Trigger any inherited pre-transfer logic.\n // Keep a reference to the amount that'll be paid as a `msg.value`.\n // slither-disable-next-line reentrancy-events\n uint256 payValue = _beforeTransferTo({to: address(terminal), token: token, amount: amount});\n\n // Send the fee.\n // If this terminal's token is ETH, send it in msg.value.\n // slither-disable-next-line unused-return\n terminal.pay{value: payValue}({\n projectId: projectId,\n token: token,\n amount: amount,\n beneficiary: beneficiary,\n minReturnedTokens: 0,\n memo: \"\",\n metadata: metadata\n });\n }\n }\n\n /// @notice Fulfills a list of pay hook specifications.\n /// @param projectId The ID of the project being paid.\n /// @param specifications The pay hook specifications to be fulfilled.\n /// @param tokenAmount The amount of tokens that the project was paid.\n /// @param payer The address that sent the payment.\n /// @param ruleset The ruleset the payment is being accepted during.\n /// @param beneficiary The address which will receive any tokens that the payment yields.\n /// @param newlyIssuedTokenCount The amount of tokens that are being issued and sent to the beneificary.\n /// @param metadata Bytes to send along to the emitted event and pay hooks as applicable.\n function _fulfillPayHookSpecificationsFor(\n uint256 projectId,\n JBPayHookSpecification[] memory specifications,\n JBTokenAmount memory tokenAmount,\n address payer,\n JBRuleset memory ruleset,\n address beneficiary,\n uint256 newlyIssuedTokenCount,\n bytes memory metadata\n )\n internal\n {\n // Keep a reference to payment context for the pay hooks.\n JBAfterPayRecordedContext memory context = JBAfterPayRecordedContext({\n payer: payer,\n projectId: projectId,\n rulesetId: ruleset.id,\n amount: tokenAmount,\n forwardedAmount: tokenAmount,\n weight: ruleset.weight,\n newlyIssuedTokenCount: newlyIssuedTokenCount,\n beneficiary: beneficiary,\n hookMetadata: bytes(\"\"),\n payerMetadata: metadata\n });\n\n // Fulfill each specification through their pay hooks.\n for (uint256 i; i < specifications.length; i++) {\n // Set the specification being iterated on.\n JBPayHookSpecification memory specification = specifications[i];\n\n // Pass the correct token `forwardedAmount` to the hook.\n context.forwardedAmount = JBTokenAmount({\n value: specification.amount,\n token: tokenAmount.token,\n decimals: tokenAmount.decimals,\n currency: tokenAmount.currency\n });\n\n // Pass the correct metadata from the data hook's specification.\n context.hookMetadata = specification.metadata;\n\n // Trigger any inherited pre-transfer logic.\n // Keep a reference to the amount that'll be paid as a `msg.value`.\n // slither-disable-next-line reentrancy-events\n uint256 payValue = _beforeTransferTo({\n to: address(specification.hook),\n token: tokenAmount.token,\n amount: specification.amount\n });\n\n // Fulfill the specification.\n // slither-disable-next-line reentrancy-events\n specification.hook.afterPayRecordedWith{value: payValue}(context);\n\n emit HookAfterRecordPay({\n hook: specification.hook,\n context: context,\n specificationAmount: specification.amount,\n caller: _msgSender()\n });\n }\n }\n\n /// @notice Fulfills a list of cash out hook specifications.\n /// @param projectId The ID of the project being cashed out from.\n /// @param beneficiaryReclaimAmount The number of tokens that are being cashed out from the project.\n /// @param holder The address that holds the tokens being cashed out.\n /// @param cashOutCount The number of tokens being cashed out.\n /// @param metadata Bytes to send along to the emitted event and cash out hooks as applicable.\n /// @param ruleset The ruleset the cash out is being made during as a `JBRuleset` struct.\n /// @param cashOutTaxRate The cash out tax rate influencing the reclaim amount.\n /// @param beneficiary The address which will receive any terminal tokens that are cashed out.\n /// @param specifications The hook specifications being fulfilled.\n /// @return amountEligibleForFees The amount of funds which were allocated to cash out hooks and are eligible for\n /// fees.\n function _fulfillCashOutHookSpecificationsFor(\n uint256 projectId,\n JBTokenAmount memory beneficiaryReclaimAmount,\n address holder,\n uint256 cashOutCount,\n bytes memory metadata,\n JBRuleset memory ruleset,\n uint256 cashOutTaxRate,\n address payable beneficiary,\n JBCashOutHookSpecification[] memory specifications\n )\n internal\n returns (uint256 amountEligibleForFees)\n {\n // Keep a reference to cash out context for the cash out hooks.\n JBAfterCashOutRecordedContext memory context = JBAfterCashOutRecordedContext({\n holder: holder,\n projectId: projectId,\n rulesetId: ruleset.id,\n cashOutCount: cashOutCount,\n reclaimedAmount: beneficiaryReclaimAmount,\n forwardedAmount: beneficiaryReclaimAmount,\n cashOutTaxRate: cashOutTaxRate,\n beneficiary: beneficiary,\n hookMetadata: \"\",\n cashOutMetadata: metadata\n });\n\n for (uint256 i; i < specifications.length; i++) {\n // Set the specification being iterated on.\n JBCashOutHookSpecification memory specification = specifications[i];\n\n // Get the fee for the specified amount.\n uint256 specificationAmountFee = _isFeeless(address(specification.hook))\n ? 0\n : JBFees.feeAmountIn({amount: specification.amount, feePercent: FEE});\n\n // Add the specification's amount to the amount eligible for fees.\n if (specificationAmountFee != 0) {\n amountEligibleForFees += specification.amount;\n specification.amount -= specificationAmountFee;\n }\n\n // Pass the correct token `forwardedAmount` to the hook.\n context.forwardedAmount = JBTokenAmount({\n value: specification.amount,\n token: beneficiaryReclaimAmount.token,\n decimals: beneficiaryReclaimAmount.decimals,\n currency: beneficiaryReclaimAmount.currency\n });\n\n // Pass the correct metadata from the data hook's specification.\n context.hookMetadata = specification.metadata;\n\n // Trigger any inherited pre-transfer logic.\n // Keep a reference to the amount that'll be paid as a `msg.value`.\n // slither-disable-next-line reentrancy-events\n uint256 payValue = _beforeTransferTo({\n to: address(specification.hook),\n token: beneficiaryReclaimAmount.token,\n amount: specification.amount\n });\n\n // Fulfill the specification.\n // slither-disable-next-line reentrancy-events\n specification.hook.afterCashOutRecordedWith{value: payValue}(context);\n\n emit HookAfterRecordCashOut({\n hook: specification.hook,\n context: context,\n specificationAmount: specification.amount,\n fee: specificationAmountFee,\n caller: _msgSender()\n });\n }\n }\n\n /// @notice Pay a project with tokens.\n /// @param projectId The ID of the project being paid.\n /// @param token The address of the token which the project is being paid with.\n /// @param amount The amount of terminal tokens being received, as a fixed point number with the same number of\n /// decimals as this terminal. If this terminal's token is the native token, `amount` is ignored and `msg.value` is\n /// used in its place.\n /// @param payer The address making the payment.\n /// @param beneficiary The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if\n /// applicable.\n /// @param memo A memo to pass along to the emitted event.\n /// @param metadata Bytes to send along to the emitted event, as well as the data hook and pay hook if applicable.\n function _pay(\n uint256 projectId,\n address token,\n uint256 amount,\n address payer,\n address beneficiary,\n string memory memo,\n bytes memory metadata\n )\n internal\n {\n // Keep a reference to the token amount to forward to the store.\n JBTokenAmount memory tokenAmount;\n\n // Scoped section prevents stack too deep. `context` only used within scope.\n {\n // Get a reference to the token's accounting context.\n JBAccountingContext memory context = _accountingContextForTokenOf[projectId][token];\n\n // Bundle the amount info into a `JBTokenAmount` struct.\n tokenAmount =\n JBTokenAmount({token: token, decimals: context.decimals, currency: context.currency, value: amount});\n }\n\n // Record the payment.\n // Keep a reference to the ruleset the payment is being made during.\n // Keep a reference to the pay hook specifications.\n // Keep a reference to the token count that'll be minted as a result of the payment.\n // slither-disable-next-line reentrancy-events\n (JBRuleset memory ruleset, uint256 tokenCount, JBPayHookSpecification[] memory hookSpecifications) = STORE\n .recordPaymentFrom({\n payer: payer,\n amount: tokenAmount,\n projectId: projectId,\n beneficiary: beneficiary,\n metadata: metadata\n });\n\n // Keep a reference to the number of tokens issued for the beneficiary.\n uint256 newlyIssuedTokenCount;\n\n // Mint tokens if needed.\n if (tokenCount != 0) {\n // Set the token count to be the number of tokens minted for the beneficiary instead of the total\n // amount.\n // slither-disable-next-line reentrancy-events\n newlyIssuedTokenCount = _controllerOf(projectId).mintTokensOf({\n projectId: projectId,\n tokenCount: tokenCount,\n beneficiary: beneficiary,\n memo: \"\",\n useReservedPercent: true\n });\n }\n\n emit Pay({\n rulesetId: ruleset.id,\n rulesetCycleNumber: ruleset.cycleNumber,\n projectId: projectId,\n payer: payer,\n beneficiary: beneficiary,\n amount: amount,\n newlyIssuedTokenCount: newlyIssuedTokenCount,\n memo: memo,\n metadata: metadata,\n caller: _msgSender()\n });\n\n // If the data hook returned pay hook specifications, fulfill them.\n if (hookSpecifications.length != 0) {\n _fulfillPayHookSpecificationsFor({\n projectId: projectId,\n specifications: hookSpecifications,\n tokenAmount: tokenAmount,\n payer: payer,\n ruleset: ruleset,\n beneficiary: beneficiary,\n newlyIssuedTokenCount: newlyIssuedTokenCount,\n metadata: metadata\n });\n }\n }\n\n /// @notice Process a fee of the specified amount from a project.\n /// @param projectId The ID of the project paying the fee.\n /// @param token The token the fee is being paid in.\n /// @param amount The fee amount, as a fixed point number with 18 decimals.\n /// @param beneficiary The address which will receive any platform tokens minted.\n /// @param feeTerminal The terminal that'll receive the fee.\n /// @param wasHeld A flag indicating if the fee being processed was being held by this terminal.\n function _processFee(\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n IJBTerminal feeTerminal,\n bool wasHeld\n )\n internal\n {\n // slither-disable-next-line reentrancy-events\n try this.executeProcessFee({\n projectId: projectId,\n token: token,\n amount: amount,\n beneficiary: beneficiary,\n feeTerminal: feeTerminal\n }) {\n emit ProcessFee({\n projectId: projectId,\n token: token,\n amount: amount,\n wasHeld: wasHeld,\n beneficiary: beneficiary,\n caller: _msgSender()\n });\n } catch (bytes memory reason) {\n emit FeeReverted({\n projectId: projectId,\n token: token,\n feeProjectId: _FEE_BENEFICIARY_PROJECT_ID,\n amount: amount,\n reason: reason,\n caller: _msgSender()\n });\n\n _recordAddedBalanceFor({projectId: projectId, token: token, amount: amount});\n }\n }\n\n /// @notice Records an added balance for a project.\n /// @param projectId The ID of the project to record the added balance for.\n /// @param token The token to record the added balance for.\n /// @param amount The amount of the token to record, as a fixed point number with the same number of decimals as\n /// this\n /// terminal.\n function _recordAddedBalanceFor(uint256 projectId, address token, uint256 amount) internal {\n STORE.recordAddedBalanceFor({projectId: projectId, token: token, amount: amount});\n }\n\n /// @notice Returns held fees to the project who paid them based on the specified amount.\n /// @param projectId The project held fees are being returned to.\n /// @param token The token that the held fees are in.\n /// @param amount The amount to base the calculation on, as a fixed point number with the same number of decimals\n /// as this terminal.\n /// @return returnedFees The amount of held fees that were returned, as a fixed point number with the same number of\n /// decimals as this terminal\n function _returnHeldFees(\n uint256 projectId,\n address token,\n uint256 amount\n )\n internal\n returns (uint256 returnedFees)\n {\n // Keep a reference to the start index.\n uint256 startIndex = _nextHeldFeeIndexOf[projectId][token];\n\n // Get a reference to the project's held fees.\n uint256 numberOfHeldFees = _heldFeesOf[projectId][token].length;\n\n // If the start index is greater than or equal to the number of held fees, return 0.\n if (startIndex >= numberOfHeldFees) return 0;\n\n // Get a reference to the leftover amount once all fees have been settled.\n uint256 leftoverAmount = amount;\n\n // Keep a reference to the number of iterations to perform.\n uint256 count = numberOfHeldFees - startIndex;\n\n // Keep a reference to the new start index.\n uint256 newStartIndex = startIndex;\n\n // Process each fee.\n for (uint256 i; i < count; i++) {\n // Save the fee being iterated on.\n JBFee memory heldFee = _heldFeesOf[projectId][token][startIndex + i];\n\n // slither-disable-next-line incorrect-equality\n if (leftoverAmount == 0) {\n break;\n } else {\n // Notice here we take `feeAmountIn` on the stored `.amount`.\n uint256 feeAmount = JBFees.feeAmountIn({amount: heldFee.amount, feePercent: FEE});\n\n // Keep a reference to the amount from which the fee was taken.\n uint256 amountPaidOut = heldFee.amount - feeAmount;\n\n if (leftoverAmount >= amountPaidOut) {\n unchecked {\n leftoverAmount -= amountPaidOut;\n returnedFees += feeAmount;\n }\n\n // Move the start index forward to the held fee after the current one.\n newStartIndex = startIndex + i + 1;\n } else {\n // And here we overwrite with `feeAmountFrom` the `leftoverAmount`\n feeAmount = JBFees.feeAmountFrom({amount: leftoverAmount, feePercent: FEE});\n\n // Get fee from `leftoverAmount`.\n unchecked {\n _heldFeesOf[projectId][token][startIndex + i].amount -= (leftoverAmount + feeAmount);\n returnedFees += feeAmount;\n }\n leftoverAmount = 0;\n }\n }\n }\n\n // Update the next held fee index.\n if (startIndex != newStartIndex) _nextHeldFeeIndexOf[projectId][token] = newStartIndex;\n\n emit ReturnHeldFees({\n projectId: projectId,\n token: token,\n amount: amount,\n returnedFees: returnedFees,\n leftoverAmount: leftoverAmount,\n caller: _msgSender()\n });\n }\n\n /// @notice Sends payouts to a project's current payout split group, according to its ruleset, up to its current\n /// payout limit.\n /// @dev If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder\n /// is sent to the project's owner.\n /// @dev Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no\n /// `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can\n /// be used to incentivize calling this function.\n /// @dev Payouts sent to addresses which aren't feeless incur the protocol fee.\n /// @param projectId The ID of the project to send the payouts of.\n /// @param token The token being paid out.\n /// @param amount The number of terminal tokens to pay out, as a fixed point number with same number of decimals as\n /// this terminal.\n /// @param currency The expected currency of the amount being paid out. Must match the currency of one of the\n /// project's current ruleset's payout limits.\n /// @return amountPaidOut The total amount that was paid out.\n function _sendPayoutsOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency\n )\n internal\n returns (uint256 amountPaidOut)\n {\n // Keep a reference to the ruleset.\n JBRuleset memory ruleset;\n\n // Record the payout.\n (ruleset, amountPaidOut) = STORE.recordPayoutFor({\n projectId: projectId,\n accountingContext: _accountingContextForTokenOf[projectId][token],\n amount: amount,\n currency: currency\n });\n\n // Get a reference to the project's owner.\n // The owner will receive tokens minted by paying the platform fee and receive any leftover funds not sent to\n // payout splits.\n address payable projectOwner = payable(_ownerOf(projectId));\n\n // If the ruleset requires privileged payout distribution, ensure the caller has the permission.\n if (ruleset.ownerMustSendPayouts()) {\n // Enforce permissions.\n _requirePermissionFrom({\n account: projectOwner,\n projectId: projectId,\n permissionId: JBPermissionIds.SEND_PAYOUTS\n });\n }\n\n // Send payouts to the splits and get a reference to the amount left over after the splits have been paid.\n // Also get a reference to the amount which was paid out to splits that is eligible for fees.\n (uint256 leftoverPayoutAmount, uint256 amountEligibleForFees) = _sendPayoutsToSplitGroupOf({\n projectId: projectId,\n token: token,\n rulesetId: ruleset.id,\n amount: amountPaidOut\n });\n\n // Send any leftover funds to the project owner and update the fee tracking accordingly.\n if (leftoverPayoutAmount != 0) {\n // Keep a reference to the fee for the leftover payout amount.\n uint256 fee =\n _isFeeless(projectOwner) ? 0 : JBFees.feeAmountIn({amount: leftoverPayoutAmount, feePercent: FEE});\n\n // Transfer the amount to the project owner.\n try this.executeTransferTo({addr: projectOwner, token: token, amount: leftoverPayoutAmount - fee}) {\n if (fee > 0) {\n amountEligibleForFees += leftoverPayoutAmount;\n leftoverPayoutAmount -= fee;\n }\n } catch (bytes memory reason) {\n emit PayoutTransferReverted({\n projectId: projectId,\n addr: projectOwner,\n token: token,\n amount: leftoverPayoutAmount - fee,\n reason: reason,\n caller: _msgSender()\n });\n\n // Add balance back to the project.\n _recordAddedBalanceFor({projectId: projectId, token: token, amount: leftoverPayoutAmount});\n }\n }\n\n // Take the fee.\n uint256 feeTaken = _takeFeeFrom({\n projectId: projectId,\n token: token,\n amount: amountEligibleForFees,\n beneficiary: projectOwner,\n shouldHoldFees: ruleset.holdFees()\n });\n\n emit SendPayouts({\n rulesetId: ruleset.id,\n rulesetCycleNumber: ruleset.cycleNumber,\n projectId: projectId,\n projectOwner: projectOwner,\n amount: amount,\n amountPaidOut: amountPaidOut,\n fee: feeTaken,\n netLeftoverPayoutAmount: leftoverPayoutAmount,\n caller: _msgSender()\n });\n }\n\n /// @notice Sends a payout to a split.\n /// @param split The split to pay.\n /// @param projectId The ID of the project the split was specified by.\n /// @param token The address of the token being paid out.\n /// @param amount The total amount that the split is being paid, as a fixed point number with the same number of\n /// decimals as this terminal.\n /// @return netPayoutAmount The amount sent to the split after subtracting fees.\n function _sendPayoutToSplit(\n JBSplit memory split,\n uint256 projectId,\n address token,\n uint256 amount\n )\n internal\n returns (uint256)\n {\n // Attempt to distribute this split.\n // slither-disable-next-line reentrancy-events\n try this.executePayout({\n split: split,\n projectId: projectId,\n token: token,\n amount: amount,\n originalMessageSender: _msgSender()\n }) returns (uint256 netPayoutAmount) {\n return netPayoutAmount;\n } catch (bytes memory failureReason) {\n emit PayoutReverted({\n projectId: projectId,\n split: split,\n amount: amount,\n reason: failureReason,\n caller: _msgSender()\n });\n\n // Add balance back to the project.\n _recordAddedBalanceFor({projectId: projectId, token: token, amount: amount});\n\n // Since the payout failed the netPayoutAmount is zero.\n return 0;\n }\n }\n\n /// @notice Sends payouts to the payout splits group specified in a project's ruleset.\n /// @param projectId The ID of the project to send the payouts of.\n /// @param token The address of the token being paid out.\n /// @param rulesetId The ID of the ruleset of the split group being paid.\n /// @param amount The total amount being paid out, as a fixed point number with the same number of decimals as this\n /// terminal.\n /// @return amount The leftover amount (zero if the splits add up to 100%).\n /// @return amountEligibleForFees The total amount of funds which were paid out and are eligible for fees.\n function _sendPayoutsToSplitGroupOf(\n uint256 projectId,\n address token,\n uint256 rulesetId,\n uint256 amount\n )\n internal\n returns (uint256, uint256 amountEligibleForFees)\n {\n // The total percentage available to split\n uint256 leftoverPercentage = JBConstants.SPLITS_TOTAL_PERCENT;\n\n // Get a reference to the project's payout splits.\n JBSplit[] memory splits =\n SPLITS.splitsOf({projectId: projectId, rulesetId: rulesetId, groupId: uint256(uint160(token))});\n\n // Transfer between all splits.\n for (uint256 i; i < splits.length; i++) {\n // Get a reference to the split being iterated on.\n JBSplit memory split = splits[i];\n\n // The amount to send to the split.\n uint256 payoutAmount = mulDiv(amount, split.percent, leftoverPercentage);\n\n // The final payout amount after taking out any fees.\n uint256 netPayoutAmount =\n _sendPayoutToSplit({split: split, projectId: projectId, token: token, amount: payoutAmount});\n\n // If the split hook is a feeless address, this payout doesn't incur a fee.\n if (netPayoutAmount != 0 && netPayoutAmount != payoutAmount) {\n amountEligibleForFees += payoutAmount;\n }\n\n if (payoutAmount != 0) {\n // Subtract from the amount to be sent to the beneficiary.\n unchecked {\n amount -= payoutAmount;\n }\n }\n\n unchecked {\n // Decrement the leftover percentage.\n leftoverPercentage -= split.percent;\n }\n\n emit SendPayoutToSplit({\n projectId: projectId,\n rulesetId: rulesetId,\n group: uint256(uint160(token)),\n split: split,\n amount: payoutAmount,\n netAmount: netPayoutAmount,\n caller: _msgSender()\n });\n }\n\n return (amount, amountEligibleForFees);\n }\n\n /// @notice Takes a fee into the platform's project (with the `_FEE_BENEFICIARY_PROJECT_ID`).\n /// @param projectId The ID of the project paying the fee.\n /// @param token The address of the token that the fee is being paid in.\n /// @param amount The fee's token amount, as a fixed point number with 18 decimals.\n /// @param beneficiary The address to mint the platform's project's tokens for.\n /// @param shouldHoldFees If fees should be tracked and held instead of being exercised immediately.\n /// @return feeAmount The amount of the fee taken.\n function _takeFeeFrom(\n uint256 projectId,\n address token,\n uint256 amount,\n address beneficiary,\n bool shouldHoldFees\n )\n internal\n returns (uint256 feeAmount)\n {\n // Get a reference to the fee amount.\n feeAmount = JBFees.feeAmountIn({amount: amount, feePercent: FEE});\n\n if (shouldHoldFees) {\n // Store the held fee.\n _heldFeesOf[projectId][token].push(\n JBFee({\n amount: amount,\n beneficiary: beneficiary,\n unlockTimestamp: uint48(block.timestamp + _FEE_HOLDING_SECONDS)\n })\n );\n\n emit HoldFee({\n projectId: projectId,\n token: token,\n amount: amount,\n fee: FEE,\n beneficiary: beneficiary,\n caller: _msgSender()\n });\n } else {\n // Get the terminal that'll receive the fee if one wasn't provided.\n IJBTerminal feeTerminal = _primaryTerminalOf({projectId: _FEE_BENEFICIARY_PROJECT_ID, token: token});\n\n // Process the fee.\n _processFee({\n projectId: projectId,\n token: token,\n amount: feeAmount,\n beneficiary: beneficiary,\n feeTerminal: feeTerminal,\n wasHeld: false\n });\n }\n }\n\n /// @notice Transfers tokens.\n /// @param from The address the transfer should originate from.\n /// @param to The address the transfer should go to.\n /// @param token The token being transfered.\n /// @param amount The number of tokens being transferred, as a fixed point number with the same number of decimals\n /// as this terminal.\n function _transferFrom(address from, address payable to, address token, uint256 amount) internal {\n // If the token is the native token, transfer natively.\n if (token == JBConstants.NATIVE_TOKEN) return Address.sendValue({recipient: to, amount: amount});\n\n if (from == address(this)) return IERC20(token).safeTransfer({to: to, value: amount});\n\n // If there's sufficient approval, transfer normally.\n if (IERC20(token).allowance(address(from), address(this)) >= amount) {\n return IERC20(token).safeTransferFrom({from: from, to: to, value: amount});\n }\n\n // Make sure the amount being paid is less than the maximum permit2 allowance.\n if (amount > type(uint160).max) revert JBMultiTerminal_OverflowAlert(amount, type(uint160).max);\n\n // Otherwise we attempt to use the PERMIT2 method.\n PERMIT2.transferFrom({from: from, to: to, amount: uint160(amount), token: token});\n }\n\n /// @notice Allows a project to send out funds from its surplus up to the current surplus allowance.\n /// @dev Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the\n /// surplus allowance.\n /// @dev Incurs the protocol fee unless the caller is a feeless address.\n /// @param projectId The ID of the project to use the surplus allowance of.\n /// @param token The token being paid out from the surplus.\n /// @param amount The amount of terminal tokens to use from the project's current surplus allowance, as a fixed\n /// point number with the same amount of decimals as this terminal.\n /// @param currency The expected currency of the amount being paid out. Must match the currency of one of the\n /// project's current ruleset's surplus allowances.\n /// @param beneficiary The address to send the funds to.\n /// @param feeBeneficiary The address to send the tokens resulting from paying the fee.\n /// @param memo A memo to pass along to the emitted event.\n /// @return netAmountPaidOut The amount of tokens paid out.\n function _useAllowanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency,\n address payable beneficiary,\n address payable feeBeneficiary,\n string memory memo\n )\n internal\n returns (uint256 netAmountPaidOut)\n {\n // Keep a reference to the ruleset.\n JBRuleset memory ruleset;\n\n // Keep a reference to the amount paid out before fees.\n uint256 amountPaidOut;\n\n // Record the use of the allowance.\n (ruleset, amountPaidOut) = STORE.recordUsedAllowanceOf({\n projectId: projectId,\n accountingContext: _accountingContextForTokenOf[projectId][token],\n amount: amount,\n currency: currency\n });\n\n // Take a fee from the `amountPaidOut`, if needed.\n // The net amount is the final amount withdrawn after the fee has been taken.\n // slither-disable-next-line reentrancy-events\n netAmountPaidOut = amountPaidOut\n - (\n _isFeeless(_msgSender())\n ? 0\n : _takeFeeFrom({\n projectId: projectId,\n token: token,\n amount: amountPaidOut,\n // The project owner will receive tokens minted by paying the platform fee.\n beneficiary: feeBeneficiary,\n shouldHoldFees: ruleset.holdFees()\n })\n );\n\n emit UseAllowance({\n rulesetId: ruleset.id,\n rulesetCycleNumber: ruleset.cycleNumber,\n projectId: projectId,\n beneficiary: beneficiary,\n feeBeneficiary: feeBeneficiary,\n amount: amount,\n amountPaidOut: amountPaidOut,\n netAmountPaidOut: netAmountPaidOut,\n memo: memo,\n caller: _msgSender()\n });\n\n // Transfer any remaining balance to the beneficiary.\n if (netAmountPaidOut != 0) {\n _transferFrom({from: address(this), to: beneficiary, token: token, amount: netAmountPaidOut});\n }\n }\n}\n" + }, + "src/interfaces/IJBCashOutTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBCashOutHook} from \"./IJBCashOutHook.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {JBAfterCashOutRecordedContext} from \"../structs/JBAfterCashOutRecordedContext.sol\";\n\n/// @notice A terminal that can be cashed out from.\ninterface IJBCashOutTerminal is IJBTerminal {\n event HookAfterRecordCashOut(\n IJBCashOutHook indexed hook,\n JBAfterCashOutRecordedContext context,\n uint256 specificationAmount,\n uint256 fee,\n address caller\n );\n event CashOutTokens(\n uint256 indexed rulesetId,\n uint256 indexed rulesetCycleNumber,\n uint256 indexed projectId,\n address holder,\n address beneficiary,\n uint256 cashOutCount,\n uint256 cashOutTaxRate,\n uint256 reclaimAmount,\n bytes metadata,\n address caller\n );\n\n function cashOutTokensOf(\n address holder,\n uint256 projectId,\n uint256 cashOutCount,\n address tokenToReclaim,\n uint256 minTokensReclaimed,\n address payable beneficiary,\n bytes calldata metadata\n )\n external\n returns (uint256 reclaimAmount);\n}\n" + }, + "src/interfaces/IJBFeeTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBFeelessAddresses} from \"./IJBFeelessAddresses.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {JBFee} from \"../structs/JBFee.sol\";\n\n/// @notice A terminal that can process and hold fees.\ninterface IJBFeeTerminal is IJBTerminal {\n event FeeReverted(\n uint256 indexed projectId,\n address indexed token,\n uint256 indexed feeProjectId,\n uint256 amount,\n bytes reason,\n address caller\n );\n event HoldFee(\n uint256 indexed projectId,\n address indexed token,\n uint256 indexed amount,\n uint256 fee,\n address beneficiary,\n address caller\n );\n event ProcessFee(\n uint256 indexed projectId,\n address indexed token,\n uint256 indexed amount,\n bool wasHeld,\n address beneficiary,\n address caller\n );\n event ReturnHeldFees(\n uint256 indexed projectId,\n address indexed token,\n uint256 indexed amount,\n uint256 returnedFees,\n uint256 leftoverAmount,\n address caller\n );\n\n function FEE() external view returns (uint256);\n function FEELESS_ADDRESSES() external view returns (IJBFeelessAddresses);\n\n function heldFeesOf(uint256 projectId, address token, uint256 count) external view returns (JBFee[] memory);\n function processHeldFeesOf(uint256 projectId, address token, uint256 count) external;\n}\n" + }, + "src/interfaces/IJBMultiTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBCashOutTerminal} from \"./IJBCashOutTerminal.sol\";\nimport {IJBDirectory} from \"./IJBDirectory.sol\";\nimport {IJBFeeTerminal} from \"./IJBFeeTerminal.sol\";\nimport {IJBPayoutTerminal} from \"./IJBPayoutTerminal.sol\";\nimport {IJBPermitTerminal} from \"./IJBPermitTerminal.sol\";\nimport {IJBProjects} from \"./IJBProjects.sol\";\nimport {IJBRulesets} from \"./IJBRulesets.sol\";\nimport {IJBSplits} from \"./IJBSplits.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {IJBTerminalStore} from \"./IJBTerminalStore.sol\";\nimport {IJBTokens} from \"./IJBTokens.sol\";\n\ninterface IJBMultiTerminal is IJBTerminal, IJBFeeTerminal, IJBCashOutTerminal, IJBPayoutTerminal, IJBPermitTerminal {\n function DIRECTORY() external view returns (IJBDirectory);\n function PROJECTS() external view returns (IJBProjects);\n function RULESETS() external view returns (IJBRulesets);\n function SPLITS() external view returns (IJBSplits);\n function STORE() external view returns (IJBTerminalStore);\n function TOKENS() external view returns (IJBTokens);\n}\n" + }, + "src/interfaces/IJBPayoutTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IJBSplits} from \"./IJBSplits.sol\";\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\nimport {JBSplit} from \"../structs/JBSplit.sol\";\n\n/// @notice A terminal that can send payouts.\ninterface IJBPayoutTerminal is IJBTerminal {\n event PayoutReverted(uint256 indexed projectId, JBSplit split, uint256 amount, bytes reason, address caller);\n event PayoutTransferReverted(\n uint256 indexed projectId, address addr, address token, uint256 amount, bytes reason, address caller\n );\n event SendPayouts(\n uint256 indexed rulesetId,\n uint256 indexed rulesetCycleNumber,\n uint256 indexed projectId,\n address projectOwner,\n uint256 amount,\n uint256 amountPaidOut,\n uint256 fee,\n uint256 netLeftoverPayoutAmount,\n address caller\n );\n event SendPayoutToSplit(\n uint256 indexed projectId,\n uint256 indexed rulesetId,\n uint256 indexed group,\n JBSplit split,\n uint256 amount,\n uint256 netAmount,\n address caller\n );\n event UseAllowance(\n uint256 indexed rulesetId,\n uint256 indexed rulesetCycleNumber,\n uint256 indexed projectId,\n address beneficiary,\n address feeBeneficiary,\n uint256 amount,\n uint256 amountPaidOut,\n uint256 netAmountPaidOut,\n string memo,\n address caller\n );\n\n function sendPayoutsOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency,\n uint256 minTokensPaidOut\n )\n external\n returns (uint256 netLeftoverPayoutAmount);\n function useAllowanceOf(\n uint256 projectId,\n address token,\n uint256 amount,\n uint256 currency,\n uint256 minTokensPaidOut,\n address payable beneficiary,\n address payable feeBeneficiary,\n string calldata memo\n )\n external\n returns (uint256 netAmountPaidOut);\n}\n" + }, + "src/interfaces/IJBPermitTerminal.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IPermit2} from \"@uniswap/permit2/src/interfaces/IPermit2.sol\";\n\nimport {IJBTerminal} from \"./IJBTerminal.sol\";\n\ninterface IJBPermitTerminal is IJBTerminal {\n function PERMIT2() external returns (IPermit2);\n}\n" + }, + "src/libraries/JBFees.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\nimport {mulDiv} from \"@prb/math/src/Common.sol\";\n\nimport {JBConstants} from \"./../libraries/JBConstants.sol\";\n\n/// @notice Fee calculations.\nlibrary JBFees {\n /// @notice Returns the amount of tokens to pay as a fee out of the specified `amount`.\n /// @dev The resulting fee will be `feePercent` of the REMAINING `amount` after subtracting the fee, not the full\n /// `amount`.\n /// @param amount The amount that the fee is based on, as a fixed point number.\n /// @param feePercent The fee percent, out of `JBConstants.MAX_FEE`.\n /// @return The amount of tokens to pay as a fee, as a fixed point number with the same number of decimals as the\n /// provided `amount`.\n function feeAmountIn(uint256 amount, uint256 feePercent) internal pure returns (uint256) {\n // The amount of tokens from the `amount` to pay as a fee. If reverse, the fee taken from a payout of\n // `amount`.\n return amount - mulDiv(amount, JBConstants.MAX_FEE, feePercent + JBConstants.MAX_FEE);\n }\n\n /// @notice Returns the fee that would have been paid based on an `amount` which has already had the fee subtracted\n /// from it.\n /// @dev The resulting fee will be `feePercent` of the full `amount`.\n /// @param amount The amount that the fee is based on, as a fixed point number with the same amount of decimals as\n /// this terminal.\n /// @param feePercent The fee percent, out of `JBConstants.MAX_FEE`.\n /// @return The amount of the fee, as a fixed point number with the same amount of decimals as this terminal.\n function feeAmountFrom(uint256 amount, uint256 feePercent) internal pure returns (uint256) {\n // The amount of tokens from the `amount` to pay as a fee. If reverse, the fee taken from a payout of\n // `amount`.\n return mulDiv(amount, feePercent, JBConstants.MAX_FEE);\n }\n}\n" + }, + "src/libraries/JBMetadataResolver.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.17;\n\n/**\n * @notice Library to parse and create metadata to store {id: data} entries.\n *\n * @dev Metadata are built as:\n * - 32B of reserved space for the protocol\n * - a lookup table `Id: offset`, defining the offset of the data for a given 4 bytes id.\n * The offset fits 1 bytes, the ID 4 bytes. This table is padded to 32B.\n * - the data for each id, padded to 32B each\n *\n * +-----------------------+ offset: 0\n * | 32B reserved |\n * +-----------------------+ offset: 1 = end of first 32B\n * | (ID1,offset1) |\n * | (ID2,offset2) |\n * | 0's padding |\n * +-----------------------+ offset: offset1 = 1 + number of words taken by the padded table\n * | id1 data1 |\n * | 0's padding |\n * +-----------------------+ offset: offset2 = offset1 + number of words taken by the data1\n * | id2 data2 |\n * | 0's padding |\n * +-----------------------+\n */\nlibrary JBMetadataResolver {\n error JBMetadataResolver_DataNotPadded();\n error JBMetadataResolver_LengthMismatch();\n error JBMetadataResolver_MetadataTooLong();\n error JBMetadataResolver_MetadataTooShort();\n\n // The various sizes used in bytes.\n uint256 constant ID_SIZE = 4;\n uint256 constant ID_OFFSET_SIZE = 1;\n uint256 constant WORD_SIZE = 32;\n\n // The size that an ID takes in the lookup table (Identifier + Offset).\n uint256 constant TOTAL_ID_SIZE = 5; // ID_SIZE + ID_OFFSET_SIZE;\n\n // The amount of bytes to go forward to get to the offset of the next ID (aka. the end of the offset of the current\n // ID).\n uint256 constant NEXT_ID_OFFSET = 9; // TOTAL_ID_SIZE + ID_SIZE;\n\n // 1 word (32B) is reserved for the protocol .\n uint256 constant RESERVED_SIZE = 32; // 1 * WORD_SIZE;\n uint256 constant MIN_METADATA_LENGTH = 37; // RESERVED_SIZE + ID_SIZE + ID_OFFSET_SIZE;\n\n /// @notice Add an {id: data} entry to an existing metadata. This is an append-only mechanism.\n /// @param originalMetadata The original metadata\n /// @param idToAdd The id to add\n /// @param dataToAdd The data to add\n /// @return newMetadata The new metadata with the entry added\n function addToMetadata(\n bytes memory originalMetadata,\n bytes4 idToAdd,\n bytes memory dataToAdd\n )\n internal\n pure\n returns (bytes memory newMetadata)\n {\n // Empty original metadata and maybe something in the first 32 bytes: create new metadata\n if (originalMetadata.length <= RESERVED_SIZE) {\n return abi.encodePacked(bytes32(originalMetadata), bytes32(abi.encodePacked(idToAdd, uint8(2))), dataToAdd);\n }\n\n // There is something in the table offset, but not a valid entry - avoid overwriting\n if (originalMetadata.length < RESERVED_SIZE + ID_SIZE + 1) revert JBMetadataResolver_MetadataTooShort();\n\n // Make sure the data is padded to 32 bytes.\n if (dataToAdd.length < 32) revert JBMetadataResolver_DataNotPadded();\n\n // Get the first data offset - upcast to avoid overflow (same for other offset)...\n uint256 firstOffset = uint8(originalMetadata[RESERVED_SIZE + ID_SIZE]);\n\n // ...go back to the beginning of the previous word (ie the last word of the table, as it can be padded)\n uint256 lastWordOfTable = firstOffset - 1;\n\n // The last offset stored in the table and its index\n uint256 lastOffset;\n\n // The number of words taken by the last data stored\n uint256 numberOfWordslastData;\n\n // Iterate to find the last entry of the table, lastOffset - we start from the end as the first value\n // encountered\n // will be the last offset\n for (uint256 i = firstOffset * WORD_SIZE - 1; i > lastWordOfTable * WORD_SIZE - 1; i--) {\n // If the byte is not 0, this is the last offset we're looking for\n if (originalMetadata[i] != 0) {\n lastOffset = uint8(originalMetadata[i]);\n uint256 lastOffsetIndex = i;\n\n // No rounding as this should be padded to 32B\n numberOfWordslastData = (originalMetadata.length - lastOffset * WORD_SIZE) / WORD_SIZE;\n\n // Copy the reserved word and the table and remove the previous padding\n newMetadata = _sliceBytes(originalMetadata, 0, lastOffsetIndex + 1);\n\n // Check if the new entry is still fitting in this word\n if (i + TOTAL_ID_SIZE >= firstOffset * WORD_SIZE) {\n // Increment every offset by 1 (as the table now takes one more word)\n for (uint256 j = RESERVED_SIZE + ID_SIZE; j < lastOffsetIndex + 1; j += TOTAL_ID_SIZE) {\n newMetadata[j] = bytes1(uint8(originalMetadata[j]) + 1);\n }\n\n // Increment the last offset so the new offset will be properly set too\n lastOffset++;\n }\n\n break;\n }\n }\n\n // Add the new entry after the last entry of the table, the new offset is the last offset + the number of words\n // taken by the last data\n newMetadata = abi.encodePacked(newMetadata, idToAdd, bytes1(uint8(lastOffset + numberOfWordslastData)));\n\n // Pad as needed - inlined for gas saving\n uint256 paddedLength =\n newMetadata.length % WORD_SIZE == 0 ? newMetadata.length : (newMetadata.length / WORD_SIZE + 1) * WORD_SIZE;\n assembly {\n mstore(newMetadata, paddedLength)\n }\n\n // Add existing data at the end\n newMetadata = abi.encodePacked(\n newMetadata, _sliceBytes(originalMetadata, firstOffset * WORD_SIZE, originalMetadata.length)\n );\n\n // Pad as needed\n paddedLength =\n newMetadata.length % WORD_SIZE == 0 ? newMetadata.length : (newMetadata.length / WORD_SIZE + 1) * WORD_SIZE;\n assembly {\n mstore(newMetadata, paddedLength)\n }\n\n // Append new data at the end\n newMetadata = abi.encodePacked(newMetadata, dataToAdd);\n\n // Pad again again as needed\n paddedLength =\n newMetadata.length % WORD_SIZE == 0 ? newMetadata.length : (newMetadata.length / WORD_SIZE + 1) * WORD_SIZE;\n\n assembly {\n mstore(newMetadata, paddedLength)\n }\n }\n\n /// @notice Create the metadata for a list of {id:data}\n /// @dev Intended for offchain use (gas heavy)\n /// @param ids The list of ids\n /// @param datas The list of corresponding datas\n /// @return metadata The resulting metadata\n function createMetadata(bytes4[] memory ids, bytes[] memory datas) internal pure returns (bytes memory metadata) {\n if (ids.length != datas.length) revert JBMetadataResolver_LengthMismatch();\n\n // Add a first empty 32B for the protocol reserved word\n metadata = abi.encodePacked(bytes32(0));\n\n // First offset for the data is after the first reserved word...\n uint256 offset = 1;\n\n // ... and after the id/offset lookup table, rounding up to 32 bytes words if not a multiple\n offset += ((ids.length * JBMetadataResolver.TOTAL_ID_SIZE) - 1) / JBMetadataResolver.WORD_SIZE + 1;\n\n // Keep a reference to the number of ids.\n uint256 numberOfIds = ids.length;\n\n // For each id, add it to the lookup table with the next free offset, then increment the offset by the data\n // length (rounded up)\n for (uint256 i; i < numberOfIds; ++i) {\n // Set the data being iterated on.\n bytes memory data = datas[i];\n\n if (data.length < 32 || data.length % JBMetadataResolver.WORD_SIZE != 0) {\n revert JBMetadataResolver_DataNotPadded();\n }\n\n metadata = abi.encodePacked(metadata, ids[i], bytes1(uint8(offset)));\n offset += data.length / JBMetadataResolver.WORD_SIZE;\n\n // Overflowing a bytes1?\n if (offset > 255) revert JBMetadataResolver_MetadataTooLong();\n }\n\n // Pad the table to a multiple of 32B\n uint256 paddedLength = metadata.length % JBMetadataResolver.WORD_SIZE == 0\n ? metadata.length\n : (metadata.length / JBMetadataResolver.WORD_SIZE + 1) * JBMetadataResolver.WORD_SIZE;\n assembly {\n mstore(metadata, paddedLength)\n }\n\n // Keep a reference to the number of datas.\n uint256 numberOfDatas = datas.length;\n\n // Add each metadata to the array, each padded to 32 bytes\n for (uint256 i; i < numberOfDatas; i++) {\n metadata = abi.encodePacked(metadata, datas[i]);\n paddedLength = metadata.length % JBMetadataResolver.WORD_SIZE == 0\n ? metadata.length\n : (metadata.length / JBMetadataResolver.WORD_SIZE + 1) * JBMetadataResolver.WORD_SIZE;\n\n assembly {\n mstore(metadata, paddedLength)\n }\n }\n }\n\n /// @notice Parse the metadata to find the data for a specific ID\n /// @dev Returns false and an empty bytes if no data is found\n /// @param id The ID to find.\n /// @param metadata The metadata to parse.\n /// @return found Whether the {id:data} was found\n /// @return targetData The data for the ID (can be empty)\n function getDataFor(bytes4 id, bytes memory metadata) internal pure returns (bool found, bytes memory targetData) {\n // Either no data or empty one with only one selector (32+4+1)\n if (metadata.length <= MIN_METADATA_LENGTH) return (false, \"\");\n\n // Get the first data offset - upcast to avoid overflow (same for other offset)\n uint256 firstOffset = uint8(metadata[RESERVED_SIZE + ID_SIZE]);\n\n // Parse the id's to find id, stop when next offset == 0 or current = first offset\n for (uint256 i = RESERVED_SIZE; metadata[i + ID_SIZE] != bytes1(0) && i < firstOffset * WORD_SIZE;) {\n // Set the current offset.\n uint256 currentOffset = uint256(uint8(metadata[i + ID_SIZE]));\n\n bytes4 parsedId;\n assembly {\n parsedId := mload(add(add(metadata, 0x20), i))\n }\n\n // _id found?\n if (parsedId == id) {\n // Are we at the end of the lookup table (either at the start of data's or next offset is 0/in the\n // padding)\n // If not, only return until from this offset to the begining of the next offset\n uint256 end = (i + NEXT_ID_OFFSET >= firstOffset * WORD_SIZE || metadata[i + NEXT_ID_OFFSET] == 0)\n ? metadata.length\n : uint256(uint8(metadata[i + NEXT_ID_OFFSET])) * WORD_SIZE;\n\n return (true, _sliceBytes(metadata, currentOffset * WORD_SIZE, end));\n }\n unchecked {\n i += TOTAL_ID_SIZE;\n }\n }\n }\n\n /// @notice Returns an unique id following a suggested format (`xor(address(this), purpose name)` where purpose name\n /// is a string giving context to the id (Permit2, quoteForSwap, etc)\n /// @param purpose A string describing the purpose associated with the id\n /// @return id The resulting ID.\n function getId(string memory purpose) internal view returns (bytes4) {\n return getId(purpose, address(this));\n }\n\n /// @notice Returns an unique id following a suggested format (`xor(address(this), purpose name)` where purpose name\n /// is a string giving context to the id (Permit2, quoteForSwap, etc)\n /// @param purpose A string describing the purpose associated with the id\n /// @param target The target which will use the metadata\n /// @return id The resulting ID.\n function getId(string memory purpose, address target) internal pure returns (bytes4) {\n return bytes4(bytes20(target) ^ bytes20(keccak256(bytes(purpose))));\n }\n\n /// @notice Slice bytes from a start index to an end index.\n /// @param data The bytes array to slice\n /// @param start The start index to slice at.\n /// @param end The end index to slice at.\n /// @param slicedBytes The sliced array.\n function _sliceBytes(\n bytes memory data,\n uint256 start,\n uint256 end\n )\n private\n pure\n returns (bytes memory slicedBytes)\n {\n assembly {\n let length := sub(end, start)\n\n // Allocate memory at the freemem(add 0x20 to include the length)\n slicedBytes := mload(0x40)\n mstore(0x40, add(add(slicedBytes, length), 0x20))\n\n // Store the length (first element)\n mstore(slicedBytes, length)\n\n // compute the actual data first offset only once\n let startBytes := add(add(data, 0x20), start)\n\n // same for the out array\n let sliceBytesStartOfData := add(slicedBytes, 0x20)\n\n // store dem data\n for { let i := 0 } lt(i, end) { i := add(i, 0x20) } {\n mstore(add(sliceBytesStartOfData, i), mload(add(startBytes, i)))\n }\n }\n }\n}\n" + }, + "src/structs/JBFee.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member amount The total amount the fee was taken from, as a fixed point number with the same number of\n/// decimals as the terminal in which this struct was created.\n/// @custom:member beneficiary The address that will receive the tokens that are minted as a result of the fee payment.\n/// @custom:member unlockTimestamp The timestamp at which the fee is unlocked and can be processed.\nstruct JBFee {\n uint256 amount;\n address beneficiary;\n uint48 unlockTimestamp;\n}\n" + }, + "src/structs/JBSingleAllowance.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/// @custom:member sigDeadline Deadline on the permit signature.\n/// @custom:member amount The maximum amount allowed to spend.\n/// @custom:member expiration Timestamp at which a spender's token allowances become invalid.\n/// @custom:member nonce An incrementing value indexed per owner,token,and spender for each signature.\n/// @custom:member signature The signature over the permit data. Supports EOA signatures, compact signatures defined by\n/// EIP-2098, and contract signatures defined by EIP-1271.\nstruct JBSingleAllowance {\n uint256 sigDeadline;\n uint160 amount;\n uint48 expiration;\n uint48 nonce;\n bytes signature;\n}\n" + } + } + } +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBChainlinkV3PriceFeed.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBChainlinkV3PriceFeed.json index fb1eca95..283a30f0 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBChainlinkV3PriceFeed.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBChainlinkV3PriceFeed.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBChainlinkV3PriceFeed", - "address": "0x102d93b7860f1927c40B0B1C12264fec5318B0D1", + "address": "0xb340efaB9AC83C42882F78ef6Fc6f177A7f63123", "abi": [ { "type": "constructor", @@ -103,83 +103,83 @@ ] } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x40b2a2faa3cbd4adec2146bbf559a27f9ad8bf9f1c3017c7bf05787e1109d31e", - "blockNumber": 83764686, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, "contractAddress": null, - "cumulativeGasUsed": "1198564", + "cumulativeGasUsed": "686649", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "923086", - "hash": "0x3b0cbe8876691ced62cd787d8774cb06f8f2c2bf7b4c884cf1ed0580cc7079d7", - "index": 2, + "gasUsed": "443655", + "hash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "index": 3, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x40b2a2faa3cbd4adec2146bbf559a27f9ad8bf9f1c3017c7bf05787e1109d31e", - "blockNumber": 83764686, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 7, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x0667e3a35983b8f09b6e9ccda57d37044a8e9e0c643316d4c9bc9376481e88c9" + "0xbe7cf7384bc7389938825c680851edf4f52b378426a58c2b5c4d90c972e89dcc" ], - "transactionHash": "0x3b0cbe8876691ced62cd787d8774cb06f8f2c2bf7b4c884cf1ed0580cc7079d7", - "transactionIndex": 2 + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x40b2a2faa3cbd4adec2146bbf559a27f9ad8bf9f1c3017c7bf05787e1109d31e", - "blockNumber": 83764686, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 4, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 8, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x3b0cbe8876691ced62cd787d8774cb06f8f2c2bf7b4c884cf1ed0580cc7079d7", - "transactionIndex": 2 + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x40b2a2faa3cbd4adec2146bbf559a27f9ad8bf9f1c3017c7bf05787e1109d31e", - "blockNumber": 83764686, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, "data": "0x", - "index": 5, + "index": 9, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x3b0cbe8876691ced62cd787d8774cb06f8f2c2bf7b4c884cf1ed0580cc7079d7", - "transactionIndex": 2 + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x40b2a2faa3cbd4adec2146bbf559a27f9ad8bf9f1c3017c7bf05787e1109d31e", - "blockNumber": 83764686, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 6, + "index": 10, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x3b0cbe8876691ced62cd787d8774cb06f8f2c2bf7b4c884cf1ed0580cc7079d7", - "transactionIndex": 2 + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 } ], - "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000200000000400000040020000000000000400000000000081000000000000000000200000000000020000000000300000000000000000000000000000000000000000000000000000000000000000000020000000000000200000000000000000000000000100200000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004800000000002000000000000000000000000000000000000020000000000002000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000200400000040020000000000000400000000000001000800000000000000200000000000020000000000300001000000000000000000000000000000000000000000000000000000008000000020000000000000000000000000000000000000000100000000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000001000000000000000000000000020000000000800000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd30e2101a97dcbAeBCBC04F14C3f624E67A35165", "3600" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a3516581565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351656001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351656001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a3516581565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351656001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351656001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -215,7 +215,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBChainlinkV3PriceFeed.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBController.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBController.json index 82723f35..84d17be1 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBController.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBController.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBController", - "address": "0x219A5cE6d1c512D5b050ad2E3d380b8746BE0Cb8", + "address": "0x74fc0e2cB3Eb5A2742f8B9F0D6F1263dD3664b5D", "abi": [ { "type": "constructor", @@ -249,7 +249,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -276,7 +276,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -330,11 +330,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -346,7 +341,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -356,7 +351,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -480,7 +475,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -507,7 +502,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -561,11 +556,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -577,7 +567,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -587,7 +577,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -730,7 +720,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -757,7 +747,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -811,11 +801,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -827,7 +812,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -837,7 +822,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -922,7 +907,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -949,7 +934,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1003,11 +988,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1019,7 +999,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1029,7 +1009,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1088,7 +1068,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1108,7 +1088,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1162,11 +1142,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1178,7 +1153,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1188,7 +1163,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1385,7 +1360,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1405,7 +1380,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1459,11 +1434,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1475,7 +1445,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1485,7 +1455,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1758,7 +1728,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1778,7 +1748,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1832,11 +1802,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1848,7 +1813,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1858,7 +1823,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2295,7 +2260,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -2322,7 +2287,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -2376,11 +2341,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -2392,7 +2352,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -2402,7 +2362,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2893,33 +2853,6 @@ ], "anonymous": false }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AddressInsufficientBalance", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBController_AddingPriceFeedNotAllowed", @@ -2932,7 +2865,7 @@ }, { "type": "error", - "name": "JBController_InvalidRedemptionRate", + "name": "JBController_InvalidCashOutTaxRate", "inputs": [ { "name": "rate", @@ -2988,6 +2921,22 @@ } ] }, + { + "type": "error", + "name": "JBController_OnlyFromTargetTerminal", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "targetTerminal", + "type": "address", + "internalType": "address" + } + ] + }, { "type": "error", "name": "JBController_RulesetSetTokenNotAllowed", @@ -3072,78 +3021,78 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xeb494e504db2ff64d7c49f51925fa626e7f03699f863b9f15e613c144c0664c0", - "blockNumber": 80970804, + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, "contractAddress": null, - "cumulativeGasUsed": "5617591", + "cumulativeGasUsed": "5541602", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "5617591", - "hash": "0x5ee7dc775e5eb42ecc364f8749a83a4937de5010b46f05cb8f9c0c51b7dff8ed", - "index": 1, + "gasUsed": "5509211", + "hash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "index": 2, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xeb494e504db2ff64d7c49f51925fa626e7f03699f863b9f15e613c144c0664c0", - "blockNumber": 80970804, + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdff1ebce6945323faa00b95c4d90f15ee59906e2b34dbc847b14b51a8aa67847" + "0x03c77d689859b7c179081f54fa7148f6bc6909767a9310d9b59ce2a0497d20a9" ], - "transactionHash": "0x5ee7dc775e5eb42ecc364f8749a83a4937de5010b46f05cb8f9c0c51b7dff8ed", - "transactionIndex": 1 + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xeb494e504db2ff64d7c49f51925fa626e7f03699f863b9f15e613c144c0664c0", - "blockNumber": 80970804, + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x5ee7dc775e5eb42ecc364f8749a83a4937de5010b46f05cb8f9c0c51b7dff8ed", - "transactionIndex": 1 + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xeb494e504db2ff64d7c49f51925fa626e7f03699f863b9f15e613c144c0664c0", - "blockNumber": 80970804, + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x5ee7dc775e5eb42ecc364f8749a83a4937de5010b46f05cb8f9c0c51b7dff8ed", - "transactionIndex": 1 + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000800000400000040020002000000000410000000000001000000000000000000200000000000000002000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000004000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000001000000020000000000000000000000000000000040000204000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidRedemptionRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0xd1f668827821ddb22398c30b8f258656f872299eacccc2ee13de91cad1e790a0\",\"urls\":[\"bzz-raw://3b80629f0ba8cab2e936e53a45db851cdf3616b73578ab381777e75dabfaf9cb\",\"dweb:/ipfs/QmZQ888nqPY9XRg2HgefVwYAaT4jeGUBWcbhjL6SiBqtvi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidCashOutTaxRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetTerminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyFromTargetTerminal\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0x3d6b6d7c8e116065e8b66939d7013341404741e79b15201e4291fd9478302e13\",\"urls\":[\"bzz-raw://8b03a02c3310559f927934465790c5dd04905def3973176a23dfe8398279da65\",\"dweb:/ipfs/QmeeZpdEjwCzPSJrJNwjMrZq9kGv5o5HL4o7eLTXAivLfL\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620060a7380380620060a7833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615d7d6200032a6000396000818161027a0152818161095701528181610bc40152818161102601528181611582015281816116e901528181611b9401528181611fa10152818161223e01528181613036015281816130b80152818161322401528181613377015281816133fe01526135bf0152600081816102e001528181611e5201528181612aa00152612f390152600081816105900152818161072701528181610da6015281816110e50152818161175a015281816126bf0152818161297f0152612c9f015260008181610328015281816107c901528181610c7d01528181610d1201528181610f460152818161123d0152818161135a015281816119e301528181611ccf01528181611dc001528181611ea701526121810152600081816102b901526108b201526000818161062a0152612b2701526000818161048f015281816109c501528181610a0701528181610e5401528181611408015281816118670152818161287401528181612bfd01526132de0152600081816103ee0152818161046601526138600152600081816105f001526125ef0152615d7d6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6106203660046145c5565b612002565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b61029c7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61035d6106203660046145c5565b612002565b61029c7f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f881565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e53169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c1690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f43169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc849091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f8169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe6001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a871614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", + "bytecode": "0x6101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b61029c7f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc81565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f9091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e1690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab256001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -3251,7 +3200,7 @@ "ruleset": "The struct for the project's latest queued ruleset." } }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3264,7 +3213,7 @@ "projectId": "The project's ID." } }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3296,7 +3245,7 @@ "beneficiaryTokenCount": "The number of tokens minted for the `beneficiary`." } }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "details": "Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3457,10 +3406,10 @@ "latestQueuedRulesetOf(uint256)": { "notice": "Gets the latest ruleset queued for a project, its approval status, and its metadata." }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Creates a project." }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`." }, "migrate(uint256,address)": { @@ -3472,7 +3421,7 @@ "pendingReservedTokenBalanceOf(uint256)": { "notice": "A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet)." }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "notice": "Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook." }, "receiveMigrationFrom(address,uint256)": { @@ -3514,7 +3463,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBController.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline3Days.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline3Days.json index 8944b1c6..266b08f4 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline3Days.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline3Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline3Days", - "address": "0xD77B219eFe7180929364E57404e23fEE5A59eacA", + "address": "0x07C3e488BD36fC6E6EE53082aFD94995Eac329f1", "abi": [ { "type": "constructor", @@ -71,68 +71,68 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x0f775cbbd945c62eb54cd0bf5a79647e6b5ad58dedc6a4c0682741dd9d5a60d2", - "blockNumber": 83764738, + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, "contractAddress": null, - "cumulativeGasUsed": "562414", + "cumulativeGasUsed": "249478", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "562414", - "hash": "0xe683093f679e886dd3bb7249b14e2c8748f900e727fcfae3e2bfbc815567fe72", + "gasUsed": "249478", + "hash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x0f775cbbd945c62eb54cd0bf5a79647e6b5ad58dedc6a4c0682741dd9d5a60d2", - "blockNumber": 83764738, + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x900ec52b7512d589d08bbc8ea19866eeb484f796402075e4a1ee449dabdb0daf" + "0xca1b7276f725d21e8a052fab5ec142149071ab510b0b38aa5fc717a3785a94e0" ], - "transactionHash": "0xe683093f679e886dd3bb7249b14e2c8748f900e727fcfae3e2bfbc815567fe72", + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x0f775cbbd945c62eb54cd0bf5a79647e6b5ad58dedc6a4c0682741dd9d5a60d2", - "blockNumber": 83764738, + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xe683093f679e886dd3bb7249b14e2c8748f900e727fcfae3e2bfbc815567fe72", + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x0f775cbbd945c62eb54cd0bf5a79647e6b5ad58dedc6a4c0682741dd9d5a60d2", - "blockNumber": 83764738, + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xe683093f679e886dd3bb7249b14e2c8748f900e727fcfae3e2bfbc815567fe72", + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300100000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000100200000000000000021000000000000000000000000004000000000000000000000000000002200000000000000100000000804000000000002000000000000000000000000000000000000020000000000002000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000001000000000000000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000000000000000300001000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000100000000000000000020000000010000000000000000004000000800000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -172,7 +172,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline3Days.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline7Days.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline7Days.json index 180568e0..c002f6a1 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline7Days.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBDeadline7Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline7Days", - "address": "0xD8eF2e39846f9361f5483AD28812A40Ea8415AB7", + "address": "0xFb132FF268F2D72415A48FF031E4FFB45f352069", "abi": [ { "type": "constructor", @@ -71,81 +71,81 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xf7188de6a7627c0f478ad90721d07de1f102fff86ba89ebf3bbb9e9b6f22d46a", - "blockNumber": 83764771, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, "contractAddress": null, - "cumulativeGasUsed": "725956", + "cumulativeGasUsed": "250584", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "571411", - "hash": "0x8ed3360bc14c7c776bb0182fb49706aec263c94a568fd07fc2c4fa3ef2e450f4", - "index": 2, + "gasUsed": "250584", + "hash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xf7188de6a7627c0f478ad90721d07de1f102fff86ba89ebf3bbb9e9b6f22d46a", - "blockNumber": 83764771, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 1, + "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x3c4341075f71ca6fd2ce971c7abcb77c81e94ca4f812c938625e88c58f483500" + "0x39f4e84150528173ab76276cc6fcf79aa862e7bbee1217196fe6c623142f580d" ], - "transactionHash": "0x8ed3360bc14c7c776bb0182fb49706aec263c94a568fd07fc2c4fa3ef2e450f4", - "transactionIndex": 2 + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xf7188de6a7627c0f478ad90721d07de1f102fff86ba89ebf3bbb9e9b6f22d46a", - "blockNumber": 83764771, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, "data": "0x", - "index": 2, + "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x8ed3360bc14c7c776bb0182fb49706aec263c94a568fd07fc2c4fa3ef2e450f4", - "transactionIndex": 2 + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xf7188de6a7627c0f478ad90721d07de1f102fff86ba89ebf3bbb9e9b6f22d46a", - "blockNumber": 83764771, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 3, + "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x8ed3360bc14c7c776bb0182fb49706aec263c94a568fd07fc2c4fa3ef2e450f4", - "transactionIndex": 2 + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xf7188de6a7627c0f478ad90721d07de1f102fff86ba89ebf3bbb9e9b6f22d46a", - "blockNumber": 83764771, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, "data": "0x", - "index": 4, + "index": 3, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x8ed3360bc14c7c776bb0182fb49706aec263c94a568fd07fc2c4fa3ef2e450f4", - "transactionIndex": 2 + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000090000000000000000000000000000000000000180000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000100200000000000000020000000000000000000000000004000800200000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000002000000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000000000000000300001000000000000000000000000000000000000000000000000000000008000000000000000000000000000008000000000000000000100010000000000000020000000000000000000040000004000800000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -185,7 +185,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline7Days.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBDirectory.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBDirectory.json index 90ab2aeb..b64ebb11 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBDirectory.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBDirectory.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBDirectory", - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", "abi": [ { "type": "constructor", @@ -523,37 +523,37 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x2bef7675f97341bc5f6fbe6d97c946d577cb8306386ded5a561187770ae20be6", - "blockNumber": 80970563, + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, "contractAddress": null, - "cumulativeGasUsed": "1474408", + "cumulativeGasUsed": "1467260", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "1474408", - "hash": "0x6186d2b72d70204d1f476b835763074f17394582ba717ce5521e1f28ed95b865", + "gasUsed": "1467260", + "hash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x2bef7675f97341bc5f6fbe6d97c946d577cb8306386ded5a561187770ae20be6", - "blockNumber": 80970563, + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xa855bde6e1e84e2a3b0fed2ff77af667fcfbd3f577f4b2f6b525defaf4b9da58" + "0x3d0641a63509300aa0c0651f36caa413851913b0e0ec6b62cdf4a0cb21720641" ], - "transactionHash": "0x6186d2b72d70204d1f476b835763074f17394582ba717ce5521e1f28ed95b865", + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", "transactionIndex": 1 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x2bef7675f97341bc5f6fbe6d97c946d577cb8306386ded5a561187770ae20be6", - "blockNumber": 80970563, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, "data": "0x", "index": 1, "topics": [ @@ -561,48 +561,48 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x6186d2b72d70204d1f476b835763074f17394582ba717ce5521e1f28ed95b865", + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x2bef7675f97341bc5f6fbe6d97c946d577cb8306386ded5a561187770ae20be6", - "blockNumber": 80970563, + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, "data": "0x", "index": 2, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x6186d2b72d70204d1f476b835763074f17394582ba717ce5521e1f28ed95b865", + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x2bef7675f97341bc5f6fbe6d97c946d577cb8306386ded5a561187770ae20be6", - "blockNumber": 80970563, + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", "index": 3, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x6186d2b72d70204d1f476b835763074f17394582ba717ce5521e1f28ed95b865", + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", "transactionIndex": 1 } ], - "logsBloom": "0x00001000000010000000000000088000000000000000000000800000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000001340080000000000000000000000000000000020000000000000000000800000000000000000000000000020000400000000000000000000100000000000000000020000000000000000080000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000100000000800000020000000000000020000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x80000000000010002000000000080020000000000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000001300080000000800000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000200000100080000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000004000000000000000000020000000000000020000010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x5735aca2dcfa1f5ba6bc33d17de5dacb6e78ef5a2de33ce447d9687daf722b21\",\"urls\":[\"bzz-raw://1682eb78c68f9859fe9d506ad835631dae6b4507d9b886f02ed1538f7b4ce178\",\"dweb:/ipfs/QmdaKHzMJQrsjpPwaqUpEU64LhLkDRTdZegPC1NhSnEEyt\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x1f2d2d41758d5ae02caf9585c8d2ee104a57ea4fa2c87f179206eafad1658b6e\",\"urls\":[\"bzz-raw://a4cd663300234d724fe2e4253b39967023005d40ddf3e1029c15ffb6c6f9a28a\",\"dweb:/ipfs/QmdYTcyE4hntr6bswgp6LEvAuZWuutuTF2orRyeuByJsQV\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b6040516331a9108f60e11b81526004810184905261030b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b6040516331a9108f60e11b81526004810184905261030b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -720,7 +720,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBDirectory.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBERC20.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBERC20.json index d505138e..b8b49838 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBERC20.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBERC20.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBERC20", - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", "abi": [ { "type": "constructor", @@ -993,87 +993,87 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x249afa959b7de25c5c6e8d3fa576c59b27b6ad05fb95e886b9d07426268e6864", - "blockNumber": 80970769, + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, "contractAddress": null, - "cumulativeGasUsed": "2273074", + "cumulativeGasUsed": "2692302", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "2273074", - "hash": "0x773af3c81ea0f2a4bf1c1853844c293f6bfce23b3d02343559b8d6b482e4f981", - "index": 1, + "gasUsed": "2239067", + "hash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "index": 3, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x249afa959b7de25c5c6e8d3fa576c59b27b6ad05fb95e886b9d07426268e6864", - "blockNumber": 80970769, + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 0, + "index": 9, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xbcb871566f31a3c2b56f7677273d8d03bb6ec8a06193176f5987a1d23b5f6874" + "0xeb3cf80c1375edf1b12f5cbc86d1f7986da193dff024def6eca50f44621a1de2" ], - "transactionHash": "0x773af3c81ea0f2a4bf1c1853844c293f6bfce23b3d02343559b8d6b482e4f981", - "transactionIndex": 1 + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x249afa959b7de25c5c6e8d3fa576c59b27b6ad05fb95e886b9d07426268e6864", - "blockNumber": 80970769, + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, "data": "0x", - "index": 1, + "index": 10, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x773af3c81ea0f2a4bf1c1853844c293f6bfce23b3d02343559b8d6b482e4f981", - "transactionIndex": 1 + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x249afa959b7de25c5c6e8d3fa576c59b27b6ad05fb95e886b9d07426268e6864", - "blockNumber": 80970769, + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, "data": "0x", - "index": 2, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x773af3c81ea0f2a4bf1c1853844c293f6bfce23b3d02343559b8d6b482e4f981", - "transactionIndex": 1 + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x249afa959b7de25c5c6e8d3fa576c59b27b6ad05fb95e886b9d07426268e6864", - "blockNumber": 80970769, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 3, + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x773af3c81ea0f2a4bf1c1853844c293f6bfce23b3d02343559b8d6b482e4f981", - "transactionIndex": 1 + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000800000000000000080000000000000000400000040020000000000000410000000000001000100000000000000220000000000000000000001340000000000000000000000000000000000020000000000000000000800000000000000000000000000000200400000002000000000000140000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000000000000000000020000004000000020000000000000080040000004000000000200000000000080000000000000000004", + "logsBloom": "0x00000000000010000000000004080000000000000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000080000000000001300000000000800100000000000000000000028000000000000000000800000000000000000000000000000000480000800000000200000100000000000000000020000000000200000000000000004000000000000000040000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000001020000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in EIP-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0xb8f69828d41b3594afd7a8c6393565901c205d8b5baf5bd2e42dbac637172979\",\"urls\":[\"bzz-raw://c790253821191ac46b2050d87df820d4209871f90c616381e2c2c00ff3eaac34\",\"dweb:/ipfs/QmcPETTyuZBzDRL39JNXj3SBMdx3Y9o4fPQLSZ27py5Jim\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xc858a86a35701004d89022a5e98819aac46ccbdc4072fc9dd43928a676b1a2ee\",\"urls\":[\"bzz-raw://18acebb483c512c0eaafcb437f09c839972c3f0d36f0201ea7baa2926b987dd2\",\"dweb:/ipfs/Qmd9bf2noaDSYDtf6FMSzKu7LPhuf91jsVNmcoCuTCuGic\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x2a650f6e593cfe5ff2e514a17ea7f593ee70cefa1888066bc983a6308acff4b1\",\"urls\":[\"bzz-raw://9a3477b9665a4b6d19f86bf2cfbfa8c08ba41193f15e68c0d75c0cab7e1fc753\",\"dweb:/ipfs/QmbcurrTatN1PBmkCWdrED8zhAqx5ah9Qp6uR8YwkKWA8V\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x9128a324d265044430e5fa4a6a2853e92d6a62a2a5a69c2fc623f5b7b8cf3f34\",\"urls\":[\"bzz-raw://1122c2c8c19d717e45a9c00ccedd9fcd3b61eab6a291469a3d6200671d3e6f25\",\"dweb:/ipfs/QmYEjVC6ttBK1YSECdJmH69LtD2mahbVW27JLv6TUdWKiU\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x62dc9346044aabf22d78541bd495aa6ca05a7f5100aed26196ba35d40b59fcb5\",\"urls\":[\"bzz-raw://5221df4501c74cd4493fee1a0f0788e02c4dc78c3c601e9f557f557c5a53ea92\",\"dweb:/ipfs/QmZpzyYY9dKLrgvYhXSHT93jwqb1UGvtGNMQk5dpECY5pa\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516122e7620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122e76000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f00000000000000000000000000000000000000000000000000000000000000006005611499565b60606105997f00000000000000000000000000000000000000000000000000000000000000006006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a16148015610c3b57507f0000000000000000000000000000000000000000000000000000000000066eee46145b15610c6557507ffde27d345c79edc17a53e76bde5defe7a65218612cab677aec3b1f874d992d8590565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e000000000000000000000000000000000000000000000000076005611499565b60606105997f31000000000000000000000000000000000000000000000000000000000000016006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", + "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df616148015610c3b57507f0000000000000000000000000000000000000000000000000000000000066eee46145b15610c6557507ff5a240d5a3bb954fbe34f685c536fb41ab72ef8f6045f6ea20e74d4823cf467e90565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e00000000000000000000000000000000000000000000000007600561150a565b60606105997f3100000000000000000000000000000000000000000000000000000000000001600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { "CLOCK_MODE()": { - "details": "Machine-readable description of the clock as specified in EIP-6372." + "details": "Machine-readable description of the clock as specified in ERC-6372." }, "DOMAIN_SEPARATOR()": { "details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." @@ -1166,7 +1166,7 @@ "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." }, "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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." @@ -1207,7 +1207,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBERC20.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBFeelessAddresses.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBFeelessAddresses.json index d6e2a02b..8d797f62 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBFeelessAddresses.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBFeelessAddresses.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFeelessAddresses", - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", "abi": [ { "type": "constructor", @@ -171,84 +171,84 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x013b3c45c4df80a952c7c58a8fc4eb6d64c0153e5120d5c65cd5ec61922dfd89", - "blockNumber": 80970838, + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, "contractAddress": null, - "cumulativeGasUsed": "351309", + "cumulativeGasUsed": "465485", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "351309", - "hash": "0xaff9e118b5b2d3d6a07f3cfdea6fe648e2089e33b5e3fa0a9726f32206e95cc5", - "index": 1, + "gasUsed": "348706", + "hash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "index": 2, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x013b3c45c4df80a952c7c58a8fc4eb6d64c0153e5120d5c65cd5ec61922dfd89", - "blockNumber": 80970838, + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 0, + "index": 1, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x784e38360823c6833c091e61ba0467344681ad377381e66d708511c8b504c94f" + "0x965d3372f1e6d3438373f20c2308b921ee43891d40785a1285a528c17b88e1c4" ], - "transactionHash": "0xaff9e118b5b2d3d6a07f3cfdea6fe648e2089e33b5e3fa0a9726f32206e95cc5", - "transactionIndex": 1 + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x013b3c45c4df80a952c7c58a8fc4eb6d64c0153e5120d5c65cd5ec61922dfd89", - "blockNumber": 80970838, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, "data": "0x", - "index": 1, + "index": 2, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xaff9e118b5b2d3d6a07f3cfdea6fe648e2089e33b5e3fa0a9726f32206e95cc5", - "transactionIndex": 1 + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x013b3c45c4df80a952c7c58a8fc4eb6d64c0153e5120d5c65cd5ec61922dfd89", - "blockNumber": 80970838, + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, "data": "0x", - "index": 2, + "index": 3, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xaff9e118b5b2d3d6a07f3cfdea6fe648e2089e33b5e3fa0a9726f32206e95cc5", - "transactionIndex": 1 + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x013b3c45c4df80a952c7c58a8fc4eb6d64c0153e5120d5c65cd5ec61922dfd89", - "blockNumber": 80970838, + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 3, + "index": 4, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xaff9e118b5b2d3d6a07f3cfdea6fe648e2089e33b5e3fa0a9726f32206e95cc5", - "transactionIndex": 1 + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 } ], - "logsBloom": "0x00100000000010000000000000088000000000000800000000801000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000001340080000000000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000100000000000000000020000000000100000000000000004000000000000000000000000000002200400000000000100000000004000000000002000000000000000000000000000000000000020000000000000020000000000000000040000004000000800200080000000080000000000080000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000800000000000000080000000000000008400000040020000000000000400000000000001000000000000200000200000000000000000000001300080020000800000000000000000000000020000000000000000000800000000000000000000000000000000400800000000000200000100000000001000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000010000000000000000000000000000020000000000000020000000000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x52f18612ac3fbe5092a91081db84c3d772a23f3cb6d02f88125d933c37b4c0f1\",\"urls\":[\"bzz-raw://23fa878e32b15373540c8439dd177468ab440a76d1c8ad9b8f6bc4c921bd9a31\",\"dweb:/ipfs/QmUhAyPn34XbiauGudPJL3wGGgVKrf8pXjJhCCeDA62g2A\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x0f6589d2a354511df98bd801ef3097d670cbc92221860ef85dd072c9c22686e4\",\"urls\":[\"bzz-raw://e0f40aad14373fa3a17094d9922611e580a3cd1a6c332bed8b0ca7d1b53bbf84\",\"dweb:/ipfs/QmUQFWtUz3ESAXgCrCjjLbjvbd6kMcmUpdybUDGwTgZJtL\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -300,7 +300,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFeelessAddresses.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBFundAccessLimits.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBFundAccessLimits.json index a5965779..2646160b 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBFundAccessLimits.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBFundAccessLimits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFundAccessLimits", - "address": "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", + "address": "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", "abi": [ { "type": "constructor", @@ -355,101 +355,81 @@ } ] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimit", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimitCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering", "inputs": [] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowance", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering", "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xc56ab9810bc49224f703e9a91f8e785cf1bc41b93189d1d73e0b3461a2ac58e2", - "blockNumber": 80970715, + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, "contractAddress": null, - "cumulativeGasUsed": "1155733", + "cumulativeGasUsed": "1128630", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "1083155", - "hash": "0xf83a0f6ca9197f11c4509c94b5abdb1b356219e006c50a500261e758330adf57", - "index": 2, + "gasUsed": "1023076", + "hash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "index": 3, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xc56ab9810bc49224f703e9a91f8e785cf1bc41b93189d1d73e0b3461a2ac58e2", - "blockNumber": 80970715, + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 1, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x67f4119c93608002f9033a869698c628436a1bee2301721c260b72e9aa576a37" + "0x9c47275f23977415d0c20656c30cea2a0fdbf0e52f762f7233bf1f78a868bab7" ], - "transactionHash": "0xf83a0f6ca9197f11c4509c94b5abdb1b356219e006c50a500261e758330adf57", - "transactionIndex": 2 + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xc56ab9810bc49224f703e9a91f8e785cf1bc41b93189d1d73e0b3461a2ac58e2", - "blockNumber": 80970715, + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, "data": "0x", "index": 2, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf83a0f6ca9197f11c4509c94b5abdb1b356219e006c50a500261e758330adf57", - "transactionIndex": 2 + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xc56ab9810bc49224f703e9a91f8e785cf1bc41b93189d1d73e0b3461a2ac58e2", - "blockNumber": 80970715, - "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", "index": 3, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xf83a0f6ca9197f11c4509c94b5abdb1b356219e006c50a500261e758330adf57", - "transactionIndex": 2 + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000000340000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000800000000000020000000000000000000000000000000040000404000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000002000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000020000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000004000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimit\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0x89a00272e5eede2b1794bce3cbfcb061084ef4e87a47d4fb6edd46b2904d6b15\",\"urls\":[\"bzz-raw://f9d28ea69ba7c60cb55ae1b456e3e528cbbfea1924995e1d6f2ec4ad9cf8d0c2\",\"dweb:/ipfs/QmTLESNyXCZqFfmLYeRS5bZ7ab1xSPeUf9StxVV7TDyP45\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0xcdfae708622dbaec27730fc94ef2319b65073038f0802b78621ce88e87332954\",\"urls\":[\"bzz-raw://a43925bc1b9cbde7dabf932e3f67aea2201ba623f6d5a77144e50db798bbf36c\",\"dweb:/ipfs/QmZBYNPZqaAjpJP93y5TinnUL8q9A7J4TJr4XEGKNFP1bU\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516110ed3803806110ed83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161105561009860003960008181609201528181610ab50152610b4401526110556000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -543,7 +523,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFundAccessLimits.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBMultiTerminal.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBMultiTerminal.json index 6ba60ac1..ce6b28df 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBMultiTerminal.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBMultiTerminal.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBMultiTerminal", - "address": "0x4DeF0AA5B9CA095d11705284221b2878731ab4EF", + "address": "0x1052d3669fb28E9e6738E399c40468e733eD3a8d", "abi": [ { "type": "constructor", @@ -32,6 +32,11 @@ "type": "address", "internalType": "contract IJBTerminalStore" }, + { + "name": "tokens", + "type": "address", + "internalType": "contract IJBTokens" + }, { "name": "permit2", "type": "address", @@ -162,6 +167,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "TOKENS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IJBTokens" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "accountingContextForTokenOf", @@ -312,6 +330,55 @@ "outputs": [], "stateMutability": "payable" }, + { + "type": "function", + "name": "cashOutTokensOf", + "inputs": [ + { + "name": "holder", + "type": "address", + "internalType": "address" + }, + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tokenToReclaim", + "type": "address", + "internalType": "address" + }, + { + "name": "minTokensReclaimed", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "currentSurplusOf", @@ -321,6 +388,28 @@ "type": "uint256", "internalType": "uint256" }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, { "name": "decimals", "type": "uint256", @@ -445,6 +534,29 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "executeTransferTo", + "inputs": [ + { + "name": "addr", + "type": "address", + "internalType": "address payable" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "heldFeesOf", @@ -458,11 +570,16 @@ "name": "token", "type": "address", "internalType": "address" + }, + { + "name": "count", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { - "name": "", + "name": "heldFees", "type": "tuple[]", "internalType": "struct JBFee[]", "components": [ @@ -596,58 +713,14 @@ "name": "token", "type": "address", "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "redeemTokensOf", - "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, - { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "tokenToReclaim", - "type": "address", - "internalType": "address" - }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "minTokensReclaimed", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address payable" }, { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "reclaimAmount", + "name": "count", "type": "uint256", "internalType": "uint256" } ], + "outputs": [], "stateMutability": "nonpayable" }, { @@ -818,6 +891,73 @@ ], "anonymous": false }, + { + "type": "event", + "name": "CashOutTokens", + "inputs": [ + { + "name": "rulesetId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rulesetCycleNumber", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "projectId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "holder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "cashOutCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "reclaimAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "caller", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "FeeReverted", @@ -906,22 +1046,22 @@ }, { "type": "event", - "name": "HookAfterRecordPay", + "name": "HookAfterRecordCashOut", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterPayRecordedContext", + "internalType": "struct JBAfterCashOutRecordedContext", "components": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, @@ -936,7 +1076,12 @@ "internalType": "uint256" }, { - "name": "amount", + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "reclaimedAmount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -990,19 +1135,14 @@ ] }, { - "name": "weight", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "projectTokenCount", + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address" + "internalType": "address payable" }, { "name": "hookMetadata", @@ -1010,7 +1150,7 @@ "internalType": "bytes" }, { - "name": "payerMetadata", + "name": "cashOutMetadata", "type": "bytes", "internalType": "bytes" } @@ -1022,6 +1162,12 @@ "indexed": false, "internalType": "uint256" }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, { "name": "caller", "type": "address", @@ -1033,22 +1179,22 @@ }, { "type": "event", - "name": "HookAfterRecordRedeem", + "name": "HookAfterRecordPay", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBRedeemHook" + "internalType": "contract IJBPayHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterRedeemRecordedContext", + "internalType": "struct JBAfterPayRecordedContext", "components": [ { - "name": "holder", + "name": "payer", "type": "address", "internalType": "address" }, @@ -1063,12 +1209,7 @@ "internalType": "uint256" }, { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "reclaimedAmount", + "name": "amount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -1122,14 +1263,19 @@ ] }, { - "name": "redemptionRate", + "name": "weight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newlyIssuedTokenCount", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address payable" + "internalType": "address" }, { "name": "hookMetadata", @@ -1137,7 +1283,7 @@ "internalType": "bytes" }, { - "name": "redeemerMetadata", + "name": "payerMetadata", "type": "bytes", "internalType": "bytes" } @@ -1149,12 +1295,6 @@ "indexed": false, "internalType": "uint256" }, - { - "name": "fee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, { "name": "caller", "type": "address", @@ -1242,7 +1382,7 @@ "internalType": "uint256" }, { - "name": "beneficiaryTokenCount", + "name": "newlyIssuedTokenCount", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1339,7 +1479,7 @@ }, { "type": "event", - "name": "ProcessFee", + "name": "PayoutTransferReverted", "inputs": [ { "name": "projectId", @@ -1347,29 +1487,29 @@ "indexed": true, "internalType": "uint256" }, + { + "name": "addr", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "token", "type": "address", - "indexed": true, + "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "wasHeld", - "type": "bool", "indexed": false, - "internalType": "bool" + "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", + "name": "reason", + "type": "bytes", "indexed": false, - "internalType": "address" + "internalType": "bytes" }, { "name": "caller", @@ -1382,31 +1522,31 @@ }, { "type": "event", - "name": "RedeemTokens", + "name": "ProcessFee", "inputs": [ { - "name": "rulesetId", + "name": "projectId", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "rulesetCycleNumber", - "type": "uint256", + "name": "token", + "type": "address", "indexed": true, - "internalType": "uint256" + "internalType": "address" }, { - "name": "projectId", + "name": "amount", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "holder", - "type": "address", + "name": "wasHeld", + "type": "bool", "indexed": false, - "internalType": "address" + "internalType": "bool" }, { "name": "beneficiary", @@ -1414,30 +1554,6 @@ "indexed": false, "internalType": "address" }, - { - "name": "redeemCount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "redemptionRate", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "reclaimAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, { "name": "caller", "type": "address", @@ -1743,31 +1859,25 @@ }, { "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] + "name": "FailedCall", + "inputs": [] }, { "type": "error", - "name": "AddressInsufficientBalance", + "name": "InsufficientBalance", "inputs": [ { - "name": "account", - "type": "address", - "internalType": "address" + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" } ] }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBMultiTerminal_AccountingContextAlreadySet", @@ -1992,76 +2102,77 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x519f90935dfcd6b42735cce476fcc09a07ae49e01707d16ae7d05ef802f65bef", - "blockNumber": 80970882, + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, "contractAddress": null, - "cumulativeGasUsed": "5737306", + "cumulativeGasUsed": "5723684", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "5737306", - "hash": "0x08238fcea8f26715396bdb8a9c9b5294e8886dd7be145e12a439b23c069afd52", - "index": 1, + "gasUsed": "5634240", + "hash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "index": 2, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x519f90935dfcd6b42735cce476fcc09a07ae49e01707d16ae7d05ef802f65bef", - "blockNumber": 80970882, + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 0, + "index": 2, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xc1e4e1e77d875784b910cfc298c5f66e417ba5d00c71dbebe3da69f6782e219b" + "0x433467a6c58b1482494d56be7cdfe14a146332a1612c2477dec67d2209f2ab1c" ], - "transactionHash": "0x08238fcea8f26715396bdb8a9c9b5294e8886dd7be145e12a439b23c069afd52", - "transactionIndex": 1 + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x519f90935dfcd6b42735cce476fcc09a07ae49e01707d16ae7d05ef802f65bef", - "blockNumber": 80970882, + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, "data": "0x", - "index": 1, + "index": 3, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x08238fcea8f26715396bdb8a9c9b5294e8886dd7be145e12a439b23c069afd52", - "transactionIndex": 1 + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x519f90935dfcd6b42735cce476fcc09a07ae49e01707d16ae7d05ef802f65bef", - "blockNumber": 80970882, + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 2, + "index": 4, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x08238fcea8f26715396bdb8a9c9b5294e8886dd7be145e12a439b23c069afd52", - "transactionIndex": 1 + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000000340000000200000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000008002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000001000000000000000000000000080000000000000000400000040020000000080000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterRedeemRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"redeemerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordRedeem\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RedeemTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"redeemTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"heldFeesOf(uint256,address)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.\",\"params\":{\"beneficiary\":\"The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.\",\"holder\":\"The account whose tokens are being redeemed.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"currentSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"heldFeesOf(uint256,address)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"notice\":\"Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xb5cd2141ff573c44ad32b4f2e147d7f8aafa8bc60696b54d6772c387581a61e5\",\"urls\":[\"bzz-raw://9605bb87282a8a183b7d6fc62489ce664c859ffd1c653e2504b8b720d6be78c8\",\"dweb:/ipfs/QmSEegf1AVghYwz4rBkj56JPzBgezhywqqPffYio1sBtuf\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x7148d30d6f0e1258b82a2bc0dc20e431a34bdc17e91884fc2aeebedf15ddd284\",\"urls\":[\"bzz-raw://d1883aeb4c15d8374ea65915856e0f718f90b228daaaffa46593d0b03db0c1b4\",\"dweb:/ipfs/Qmb2wmUdXfk6kfD7R1kRir6jB6AbyBAZtfeBE9K49DLek5\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x1920b27db84df39c883579a6f0f06c75a6c60507cae6457ee4360e6da6d53e4b\",\"urls\":[\"bzz-raw://82402bd1ff38c76fc87d57e3b4fc4f6d3ba37d5905aaca11c4c1839c2f020b9f\",\"dweb:/ipfs/QmbWJ7wefdX864Hm6DwoYs8GXS59QYEo5Rzh397aSTR4x7\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x5ce477c270dfcbc570363f8a4d951ecbce7564f374080a56575d273a35b3aa2b\",\"urls\":[\"bzz-raw://57ca35b8f5e9f79b2abca6e4b6706c693d52f6be634996c3a51b9e0f3d4b0244\",\"dweb:/ipfs/QmcEbmRsMx5shJg4ffisJupyb9yULaLW5VZxQnmmUiYWty\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemTerminal.sol\":{\"keccak256\":\"0x9b6baf323be2bf52de9f925410abc4d06ff6292cb6a342274bd4ca6eb4fedde5\",\"urls\":[\"bzz-raw://ec59b6ebdeda8de72d68244da0ee0c43b504791480517f70a751157a7a249c37\",\"dweb:/ipfs/QmcFtyoLyYxoZMGmC75aAqoGznC8BLUKHhDiounHbHNosa\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedCall\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"CashOutTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordCashOut\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutTransferReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"cashOutTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeTransferTo\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"heldFees\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.\",\"params\":{\"beneficiary\":\"The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account whose tokens are being cashed out.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"accountingContexts\":\"The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.\",\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"executeTransferTo(address,address,uint256)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"addr\":\"The address to transfer funds to.\",\"amount\":\"The amount of tokens to transfer.\",\"token\":\"The token to transfer.\"}},\"heldFeesOf(uint256,address,uint256)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address,uint256)\":{\"params\":{\"count\":\"The number of fees to process.\",\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"TOKENS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"notice\":\"Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook.\"},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"executeTransferTo(address,address,uint256)\":{\"notice\":\"Transfer funds to an address.\"},\"heldFeesOf(uint256,address,uint256)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address,uint256)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xbc24f690394a292930a621d67c9d62e5888c68ed6f32cf9889d34a2742112d0e\",\"urls\":[\"bzz-raw://3c22283618b43aa33fb47bdd7031bb538c3e07aad70d7a36a954bb2ba55d4f6f\",\"dweb:/ipfs/QmeV23MDrmFdYYdLybvvpjK3bqbDyu8mAR3yZZQEiwuecc\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0xac8ed1afe397bb4c4060d947ec5765cf600cefb6d10829157153f0a4324807ea\",\"urls\":[\"bzz-raw://6be3361a27a1944853407d61f33813b21403a63e0d4113c7b7e84ce3b87f5d61\",\"dweb:/ipfs/QmdFTXKU1j4gdFL6nNx1LTTtbgoaRgdnwyVJ7UaQDp9Uo1\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x6a71d83541ad900500674f70678c3287f1be3e5432134d16df3c65d97bbaf9e1\",\"urls\":[\"bzz-raw://73fa45b855b288827b211ed50fefaba35da66586544e6188a206f07feed099de\",\"dweb:/ipfs/QmQzUqTXAA3PF2jdyVQ4Pinfegmvc947iL4ATCLU59XwGH\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x5d4bb096842b1e06e65fb4299d1a9162e82d397a67a9b742aeb445f8fbfd8829\",\"urls\":[\"bzz-raw://5d7648a498111cfc879f00cb073c5077b648530d55ca2298f9bcf7514bff5f4a\",\"dweb:/ipfs/QmUt9XWSbWia6m99Xbr3UDoKY79ptujw6YmhqbYTcfqau4\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x025153918d26744dc4c6ffcdf8b009fb294f3815a73740704f8686eb594d530f\",\"urls\":[\"bzz-raw://aea589b93c57b4b9e781dd76f37897c1dbddc0d4b289801571ba10f21c19b9f9\",\"dweb:/ipfs/Qma7bvMtB7SQHb6qUit2o9KP5H46ctimXUsZXnoYKJcWdK\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xf36a63951A49a9708f007F23B077751be80fFE11", + "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x270eC8711dCa04cf5f3FdF10141428065e07194F", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0x000000000022D473030F116dDEE9F6B43aC78BA3", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620062ad380380620062ad833981016040819052620000359162000176565b6001600160a01b0380871660805280821660a052604080516388bc2ef360e01b81529051918516916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af919062000221565b6001600160a01b0390811660c05287811660e052858116610120526040805163d4a1b4b160e01b815290519185169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000221565b6001600160a01b039081166101405293841661016052509082166101805216610100525062000248915050565b6001600160a01b03811681146200017357600080fd5b50565b600080600080600080600060e0888a0312156200019257600080fd5b87516200019f816200015d565b6020890151909750620001b2816200015d565b6040890151909650620001c5816200015d565b6060890151909550620001d8816200015d565b6080890151909450620001eb816200015d565b60a0890151909350620001fe816200015d565b60c089015190925062000211816200015d565b8091505092959891949750929550565b6000602082840312156200023457600080fd5b815162000241816200015d565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161018051615f3e6200036f6000396000818161035c015281816115a1015281816117bc015281816122450152818161269d0152818161281901528181612aba01528181612e9d0152818161348e01526144dc0152600081816101cd0152613f2f0152600081816105c1015261080f01526000818161023b01528181610757015281816113720152818161168801528181612b6c0152612c0001526000818161047e01528181611e48015261254801526000818161044a0152611ab701526000818161050501528181610f81015281816119fd01528181611f9a01526136a20152600081816103c8015281816104cf015261307c01526000818161061501526121600152615f3e6000f3fe6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", - "deployedBytecode": "0x6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1181565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb01081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb0109091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe111691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe119091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe116001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe16906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", + "bytecode": "0x6101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f81565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab881565b3480156104e257600080fd5b506102807f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87610280565b34801561056957600080fd5b506102807f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e9091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f1691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab89091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f9091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2516906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -2101,6 +2212,21 @@ "token": "The token being added to the balance." } }, + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "details": "Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.", + "params": { + "beneficiary": "The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account whose tokens are being cashed out.", + "metadata": "Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.", + "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.", + "projectId": "The ID of the project the project tokens belong to.", + "tokenToReclaim": "The token being reclaimed." + }, + "returns": { + "reclaimAmount": "The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals." + } + }, "constructor": { "params": { "feelessAddresses": "A contract that stores addresses that shouldn't incur fees when being paid towards or from.", @@ -2112,9 +2238,10 @@ "trustedForwarder": "A trusted forwarder of transactions to this contract." } }, - "currentSurplusOf(uint256,uint256,uint256)": { + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "details": "This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).", "params": { + "accountingContexts": "The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.", "currency": "The currency to express the returned value in terms of.", "decimals": "The number of decimals to include in the fixed point returned value.", "projectId": "The ID of the project to get the current total surplus of." @@ -2145,7 +2272,15 @@ "token": "The token the fee is being paid in." } }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "details": "Only accepts calls from this terminal itself.", + "params": { + "addr": "The address to transfer funds to.", + "amount": "The amount of tokens to transfer.", + "token": "The token to transfer." + } + }, + "heldFeesOf(uint256,address,uint256)": { "details": "Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.", "params": { "projectId": "The ID of the project that is holding fees.", @@ -2180,27 +2315,13 @@ "beneficiaryTokenCount": "The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals." } }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "params": { + "count": "The number of fees to process.", "projectId": "The ID of the project to process held fees for.", "token": "The token to process held fees for." } }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "details": "Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.", - "params": { - "beneficiary": "The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.", - "holder": "The account whose tokens are being redeemed.", - "metadata": "Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.", - "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.", - "projectId": "The ID of the project the project tokens belong to.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals.", - "tokenToReclaim": "The token being reclaimed." - }, - "returns": { - "reclaimAmount": "The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals." - } - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "details": "If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.", "params": { @@ -2234,7 +2355,7 @@ "currency": "The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.", "feeBeneficiary": "The address to send the tokens resulting from paying the fee.", "memo": "A memo to pass along to the emitted event.", - "minTokensPaidOut": "The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", + "minTokensPaidOut": "The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", "projectId": "The ID of the project to use the surplus allowance of.", "token": "The token being paid out from the surplus." }, @@ -2275,6 +2396,9 @@ "STORE()": { "notice": "The contract that stores and manages the terminal's data." }, + "TOKENS()": { + "notice": "The contract storing and managing project rulesets." + }, "accountingContextForTokenOf(uint256,address)": { "notice": "A project's accounting context for a token." }, @@ -2287,7 +2411,10 @@ "addToBalanceOf(uint256,address,uint256,bool,string,bytes)": { "notice": "Adds funds to a project's balance without minting tokens." }, - "currentSurplusOf(uint256,uint256,uint256)": { + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "notice": "Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook." + }, + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the total current surplus amount in this terminal for a project, in terms of a given currency." }, "executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)": { @@ -2296,7 +2423,10 @@ "executeProcessFee(uint256,address,uint256,address,address)": { "notice": "Process a specified amount of fees for a project." }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "notice": "Transfer funds to an address." + }, + "heldFeesOf(uint256,address,uint256)": { "notice": "Fees that are being held for a project." }, "migrateBalanceOf(uint256,address,address)": { @@ -2305,12 +2435,9 @@ "pay(uint256,address,uint256,address,uint256,string,bytes)": { "notice": "Pay a project with tokens." }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "notice": "Process any fees that are being held for the project." }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "notice": "Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook." - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "notice": "Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit." }, @@ -2323,7 +2450,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBMultiTerminal.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBPermissions.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBPermissions.json index 3bf77137..c1e27c83 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBPermissions.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBPermissions.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPermissions", - "address": "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", + "address": "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", "abi": [ { "type": "function", @@ -229,68 +229,68 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x0f0372d04702cedf1310ab9cda3cd1fdc3284bce1e789113a619423a45667aa1", - "blockNumber": 80970477, + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, "contractAddress": null, - "cumulativeGasUsed": "894188", + "cumulativeGasUsed": "646604", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "650374", - "hash": "0xb4630113ab72a30be53a519234c3e9c444bb66b9260ed3a172a5130bf2ad3810", - "index": 3, + "gasUsed": "646604", + "hash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x0f0372d04702cedf1310ab9cda3cd1fdc3284bce1e789113a619423a45667aa1", - "blockNumber": 80970477, + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 9, + "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xe462aa46dac5073d1d7ae094f2e711ece9687254f7dee6daa5b963ad1b0153fa" + "0x3e088ed36ced9cedebbb7f2fc1170ba65cdc037cbb05a8d30e6f6b95b28cd4a3" ], - "transactionHash": "0xb4630113ab72a30be53a519234c3e9c444bb66b9260ed3a172a5130bf2ad3810", - "transactionIndex": 3 + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x0f0372d04702cedf1310ab9cda3cd1fdc3284bce1e789113a619423a45667aa1", - "blockNumber": 80970477, + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, "data": "0x", - "index": 10, + "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb4630113ab72a30be53a519234c3e9c444bb66b9260ed3a172a5130bf2ad3810", - "transactionIndex": 3 + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x0f0372d04702cedf1310ab9cda3cd1fdc3284bce1e789113a619423a45667aa1", - "blockNumber": 80970477, + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 11, + "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xb4630113ab72a30be53a519234c3e9c444bb66b9260ed3a172a5130bf2ad3810", - "transactionIndex": 3 + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000100100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000042000004000000000200000000000080000000800000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000008000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000800000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -351,7 +351,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPermissions.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBPrices.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBPrices.json index e081125e..f8e87423 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBPrices.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBPrices.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPrices", - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", "abi": [ { "type": "constructor", @@ -369,37 +369,37 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x707da4a27e24faaf4658d7cdcf545f708c83081dffd5e431b6b5f02fedd758c3", - "blockNumber": 80970696, + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, "contractAddress": null, - "cumulativeGasUsed": "910326", + "cumulativeGasUsed": "861508", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "866412", - "hash": "0x5c5fe48ae9c6e9946dc354e4f37a6c726a3d2304afd0e1fd71e4d2df3affa99f", - "index": 2, + "gasUsed": "861508", + "hash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x707da4a27e24faaf4658d7cdcf545f708c83081dffd5e431b6b5f02fedd758c3", - "blockNumber": 80970696, + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdf68971f95dea4c4bf653546ee3e75acf0910d2f99cfbac5cac04028ee9cb478" + "0xec2813534df44dd2364213497d9cf8feba8452db60a698313f40f17ae4ec6b27" ], - "transactionHash": "0x5c5fe48ae9c6e9946dc354e4f37a6c726a3d2304afd0e1fd71e4d2df3affa99f", - "transactionIndex": 2 + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x707da4a27e24faaf4658d7cdcf545f708c83081dffd5e431b6b5f02fedd758c3", - "blockNumber": 80970696, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, "data": "0x", "index": 1, "topics": [ @@ -407,49 +407,49 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x5c5fe48ae9c6e9946dc354e4f37a6c726a3d2304afd0e1fd71e4d2df3affa99f", - "transactionIndex": 2 + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x707da4a27e24faaf4658d7cdcf545f708c83081dffd5e431b6b5f02fedd758c3", - "blockNumber": 80970696, + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, "data": "0x", "index": 2, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x5c5fe48ae9c6e9946dc354e4f37a6c726a3d2304afd0e1fd71e4d2df3affa99f", - "transactionIndex": 2 + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x707da4a27e24faaf4658d7cdcf545f708c83081dffd5e431b6b5f02fedd758c3", - "blockNumber": 80970696, + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", "index": 3, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x5c5fe48ae9c6e9946dc354e4f37a6c726a3d2304afd0e1fd71e4d2df3affa99f", - "transactionIndex": 2 + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000088000000000000040200000800000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000040001340080000001000000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000900000000000000000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000020000000000000000040000004000000000200080000000080000000000080000000", + "logsBloom": "0x00000000000010000000000000080040000200000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000220000000000000000200001300080000000800000020000000000000000020000000000000000000800000000000000000000000000000000400000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000008000000000000000020000000000000020000000000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", + "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -520,7 +520,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPrices.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBProjects.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBProjects.json index a077ac1b..c47a2774 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBProjects.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBProjects.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBProjects", - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "abi": [ { "type": "constructor", @@ -630,37 +630,37 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "contractAddress": null, - "cumulativeGasUsed": "1457261", + "cumulativeGasUsed": "1440835", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "1359104", - "hash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "gasUsed": "1351388", + "hash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "index": 2, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 2, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x6c62e7dbcca176ffac779d19d70b8fd23ca46c151ccb3ea38a6f6186de21914e" + "0x2cf067bdefeacbb4498d9ad2422d555880b57a6dfdb7fc0b8afae97a35e32abc" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x", "index": 3, "topics": [ @@ -668,13 +668,13 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", "index": 4, "topics": [ @@ -682,13 +682,13 @@ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x", "index": 5, "topics": [ @@ -697,47 +697,47 @@ "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x", "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xafd89c3955fca2a78c7e41eae03d99bbddadb917b8fdd3c619659301ec607983", - "blockNumber": 80970515, + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xece7f531fab4cc065a5356e83f26fb1277e7e63d64fb338bb7165b84e21799a6", + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", "transactionIndex": 2 } ], - "logsBloom": "0x00000000000010000000000000088200000000000000400000800000000000000080000000000000000400000040020000000000000410000000400001040000000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000008000010000000400000000000000000000100000000000040000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000010000010000020000000000000060000000000000000040000004000000000200080000000080040000000080000000", + "logsBloom": "0x00000000000010000000000000080200000000000000000000800000000000000080000000000000000400000040020000008000000400000000000001040000000000100000200000000008400000000001300080040000800000000000000000000000020000000000000000000800000000000000000000000490000000400000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100400000024000000000002000000000000000000000000090000000000020000000000000060000000000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0b38038062001b0b833981016040819052620000349162000729565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000807565b506001620000a0828262000807565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b5050620009a2565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008d3565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb83836200020f565b6200020a600084848462000279565b505050565b6001600160a01b0382166200023b57604051633250574960e11b815260006004820152602401620000ca565b60006200024a838383620003b0565b90506001600160a01b038116156200020a576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003aa57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002be903390889087908790600401620008fb565b6020604051808303816000875af1925050508015620002fc575060408051601f3d908101601f19168201909252620002f9918101906200096f565b60015b6200036a573d8080156200032d576040519150601f19603f3d011682016040523d82523d6000602084013e62000332565b606091505b5080516000036200036257604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a857604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e057620003e0818486620004af565b6001600160a01b038116156200042057620003ff600085818062000519565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000450576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004bc83838362000647565b6200020a576001600160a01b038316620004ed57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200052e57506001600160a01b03821615155b15620006175760006200054184620006d0565b90506001600160a01b038316158015906200056e5750826001600160a01b0316816001600160a01b031614155b8015620005a157506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005cc5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006155783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006c85750826001600160a01b0316846001600160a01b03161480620006a357506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006c857506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070b57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073d57600080fd5b620007488362000711565b9150620007586020840162000711565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078c57607f821691505b602082108103620007ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020a576000816000526020600020601f850160051c81016020861015620007de5750805b601f850160051c820191505b81811015620007ff57828155600101620007ea565b505050505050565b81516001600160401b0381111562000823576200082362000761565b6200083b8162000834845462000777565b84620007b3565b602080601f8311600181146200087357600084156200085a5750858301515b600019600386901b1c1916600185901b178555620007ff565b600085815260208120601f198616915b82811015620008a45788860151825594840194600190910190840162000883565b5085821015620008c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008f457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b828110156200094b5785810182015185820160a0015281016200092d565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200098257600080fd5b81516001600160e01b0319811681146200099b57600080fd5b9392505050565b61115980620009b26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -847,7 +847,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBProjects.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBRulesets.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBRulesets.json index 372fcad0..d448c488 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBRulesets.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBRulesets.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBRulesets", - "address": "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", + "address": "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", "abi": [ { "type": "constructor", @@ -85,7 +85,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -170,7 +170,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -189,6 +189,118 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "deriveCycleNumberFrom", + "inputs": [ + { + "name": "baseRulesetCycleNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveStartFrom", + "inputs": [ + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mustStartAtOrAfter", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveWeightFrom", + "inputs": [ + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeightCutPercent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetCacheId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "weight", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getRulesetOf", @@ -241,7 +353,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -307,7 +419,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -370,7 +482,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "internalType": "uint256" }, @@ -427,7 +539,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -493,7 +605,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -585,7 +697,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -618,24 +730,44 @@ "anonymous": false }, { - "type": "error", - "name": "JBControlled_ControllerUnauthorized", + "type": "event", + "name": "WeightCacheUpdated", "inputs": [ { - "name": "controller", + "name": "projectId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "weight", + "type": "uint112", + "indexed": false, + "internalType": "uint112" + }, + { + "name": "weightCutMultiple", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "caller", "type": "address", + "indexed": false, "internalType": "address" } - ] + ], + "anonymous": false }, { "type": "error", - "name": "JBRulesets_InvalidDecayPercent", + "name": "JBControlled_ControllerUnauthorized", "inputs": [ { - "name": "percent", - "type": "uint256", - "internalType": "uint256" + "name": "controller", + "type": "address", + "internalType": "address" } ] }, @@ -698,6 +830,17 @@ } ] }, + { + "type": "error", + "name": "JBRulesets_InvalidWeightCutPercent", + "inputs": [ + { + "name": "percent", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "PRBMath_MulDiv_Overflow", @@ -720,70 +863,70 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x5085b4171a0b081c567968366d484e5a48b906078ebb54ce0ac84977f28d08ba", - "blockNumber": 80970671, + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, "contractAddress": null, - "cumulativeGasUsed": "1839057", + "cumulativeGasUsed": "1915951", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "1839057", - "hash": "0x69a16fd4aaa16ad42e8ea558de90169883c2272687e7a42c054d94c2f03bc442", + "gasUsed": "1915951", + "hash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x5085b4171a0b081c567968366d484e5a48b906078ebb54ce0ac84977f28d08ba", - "blockNumber": 80970671, + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x0692dc8533fe3ca59c7f32ffe1c5126a17c5b1c38bf862594a3a5753175b9934" + "0x031bd4b4eb907a604404f880b69ecca9c978160d3913edd2d4b07e4d10e185ee" ], - "transactionHash": "0x69a16fd4aaa16ad42e8ea558de90169883c2272687e7a42c054d94c2f03bc442", + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x5085b4171a0b081c567968366d484e5a48b906078ebb54ce0ac84977f28d08ba", - "blockNumber": 80970671, + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x69a16fd4aaa16ad42e8ea558de90169883c2272687e7a42c054d94c2f03bc442", + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x5085b4171a0b081c567968366d484e5a48b906078ebb54ce0ac84977f28d08ba", - "blockNumber": 80970671, + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x69a16fd4aaa16ad42e8ea558de90169883c2272687e7a42c054d94c2f03bc442", + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000010000000000000340000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000800000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000200000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000200000100000000000000000020000000000000000000000000004000000000000020000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidDecayPercent\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"decayPercent\":\"A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0x9a0d949ea3b79bf5edd35366d0b6872a94ff1c91f5c4c6a5c08c4d0c8bf7afc1\",\"urls\":[\"bzz-raw://203825c2247b772e8108c88af2c759022e9f444d61343f322c076378c0c5c604\",\"dweb:/ipfs/QmQ8dYTGSv8HHPYi5x5gfkgBsjtJFmEKjRGYSCHPBKamcW\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x28a3c175cd6a2721aba5416218f64c8fc63ccea735e824f7eb1922ab3d241286\",\"urls\":[\"bzz-raw://6f9504290f6b44e3c68d10990af834f182a5ea49c4f5552579d68ded8890fc5b\",\"dweb:/ipfs/QmXKme97iEX6R8KYL4AUNBLRJLXdtrwt3ZvhV4Ds3AKKQ2\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeightCutPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutMultiple\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"WeightCacheUpdated\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveCycleNumberFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveStartFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetCacheId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"deriveWeightFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"details\":\"Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.\",\"params\":{\"baseRulesetCycleNumber\":\"The cycle number of the base ruleset.\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"start\":\"The start time of the ruleset to derive a cycle number for.\"},\"returns\":{\"_0\":\"The ruleset's cycle number.\"}},\"deriveStartFrom(uint256,uint256,uint256)\":{\"params\":{\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"mustStartAtOrAfter\":\"The earliest time the next ruleset can start. The ruleset cannot start before this timestamp.\"},\"returns\":{\"start\":\"The next start time.\"}},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRulesetCacheId\":\"The ID of the ruleset to base the calculation on (the previous ruleset).\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"baseRulesetWeight\":\"The weight of the base ruleset.\",\"baseRulesetWeightCutPercent\":\"The weight cut percent of the base ruleset.\",\"projectId\":\"The ID of the project to which the ruleset weights apply.\",\"start\":\"The start time of the ruleset to derive a weight for.\"},\"returns\":{\"weight\":\"The derived weight, as a fixed point number with 18 decimals.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\",\"weightCutPercent\":\"A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The cycle number of the next ruleset given the specified ruleset.\"},\"deriveStartFrom(uint256,uint256,uint256)\":{\"notice\":\"The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.\"},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"The accumulated weight change since the specified ruleset.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0xace1fce879c2cd07db1518adb9091344621a0ced6e7abda3fe5c9c0239ad584c\",\"urls\":[\"bzz-raw://c74587ed1cdc1b6877fc23c0bdc8daab48adb33540fef494c10b01d199e51cfb\",\"dweb:/ipfs/QmW7zApznimSpP4ESmp8igsvNUqFLDUfDmEJ9mNvR7a3JZ\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x523d7c561f4040820c411309d10ee117ad3bf9ae30353d9b5fbe827f15411aaf\",\"urls\":[\"bzz-raw://4d7f9979439244800e00879054fe7861820fc492ab5e668acab5af18cb60b7a5\",\"dweb:/ipfs/QmfQVhJ9xdMpY5RsnNAgWj5pqPkGwVx2uhVzM2BiVyPN9t\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051611dcc380380611dcc83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611d336100996000396000818161015901528181610fba01526110490152611d336000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -819,6 +962,42 @@ "ruleset": "The project's current ruleset." } }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "details": "Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.", + "params": { + "baseRulesetCycleNumber": "The cycle number of the base ruleset.", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "start": "The start time of the ruleset to derive a cycle number for." + }, + "returns": { + "_0": "The ruleset's cycle number." + } + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "params": { + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "mustStartAtOrAfter": "The earliest time the next ruleset can start. The ruleset cannot start before this timestamp." + }, + "returns": { + "start": "The next start time." + } + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "params": { + "baseRulesetCacheId": "The ID of the ruleset to base the calculation on (the previous ruleset).", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "baseRulesetWeight": "The weight of the base ruleset.", + "baseRulesetWeightCutPercent": "The weight cut percent of the base ruleset.", + "projectId": "The ID of the project to which the ruleset weights apply.", + "start": "The start time of the ruleset to derive a weight for." + }, + "returns": { + "weight": "The derived weight, as a fixed point number with 18 decimals." + } + }, "getRulesetOf(uint256,uint256)": { "params": { "projectId": "The ID of the project to which the ruleset belongs.", @@ -842,12 +1021,12 @@ "details": "Only a project's current controller can queue its rulesets.", "params": { "approvalHook": "A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.", - "decayPercent": "A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.", - "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).", + "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).", "metadata": "Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.", "mustStartAtOrAfter": "The earliest time the ruleset can start. The ruleset cannot start before this timestamp.", "projectId": "The ID of the project to queue the ruleset for.", - "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid." + "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.", + "weightCutPercent": "A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one." }, "returns": { "_0": "The struct of the new ruleset." @@ -885,6 +1064,15 @@ "currentOf(uint256)": { "notice": "The ruleset that is currently active for the specified project." }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "notice": "The cycle number of the next ruleset given the specified ruleset." + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "notice": "The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle." + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "notice": "The accumulated weight change since the specified ruleset." + }, "getRulesetOf(uint256,uint256)": { "notice": "Get the ruleset struct for a given `rulesetId` and `projectId`." }, @@ -906,7 +1094,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBRulesets.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBSplits.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBSplits.json index 8c362d14..19b38407 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBSplits.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBSplits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBSplits", - "address": "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", + "address": "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", "abi": [ { "type": "constructor", @@ -265,70 +265,70 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x74d3d65b9040a4ad683acdc5ae4eeb791c67fc46256a7b9fa2e996ef092c1eb5", - "blockNumber": 80970624, + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, "contractAddress": null, - "cumulativeGasUsed": "887712", + "cumulativeGasUsed": "882644", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "887712", - "hash": "0x0f0c58839e4da2154e2a5297c168923c7861de465137a457167d47eecdb15fa3", + "gasUsed": "882644", + "hash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x74d3d65b9040a4ad683acdc5ae4eeb791c67fc46256a7b9fa2e996ef092c1eb5", - "blockNumber": 80970624, + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x289b4cd4c61de904105729abdd018beaf65d1c5c65f53b511324867674e48347" + "0x6eb40c57d30dcbfab530092c1432b61dabc5a2ba2b73f7b509ca25b05116af1c" ], - "transactionHash": "0x0f0c58839e4da2154e2a5297c168923c7861de465137a457167d47eecdb15fa3", + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x74d3d65b9040a4ad683acdc5ae4eeb791c67fc46256a7b9fa2e996ef092c1eb5", - "blockNumber": 80970624, + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x0f0c58839e4da2154e2a5297c168923c7861de465137a457167d47eecdb15fa3", + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x74d3d65b9040a4ad683acdc5ae4eeb791c67fc46256a7b9fa2e996ef092c1eb5", - "blockNumber": 80970624, + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x0f0c58839e4da2154e2a5297c168923c7861de465137a457167d47eecdb15fa3", + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000000340000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004010000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000020000310000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x4bfa3109359cdd172dafd214f6675e92f51efc7d725636f1fd1ab4b63a71b951\",\"urls\":[\"bzz-raw://3a612d0db4783d7b104216ba718f25040b09e828b9e4bd69d1de8b0e875451c3\",\"dweb:/ipfs/QmTZBkT3mz6ygzijJy7BbdjTPsAvxj96AWsn5GtVQgBPdx\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x623066f6c0ee716cd925a207c32ba3466245dddfaca317492f999af1afa1aeb1\",\"urls\":[\"bzz-raw://1925d4d721d66365d142cd39e21acf896e99dafbaebaa698690f9b6d56faaff6\",\"dweb:/ipfs/QmPaKw3UdLsNhYYJ3PY5KNPGVw375EAcyrjxiogYkvdcvs\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -377,7 +377,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBSplits.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBTerminalStore.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBTerminalStore.json index affc43ac..02542ae0 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBTerminalStore.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBTerminalStore.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTerminalStore", - "address": "0xf36a63951A49a9708f007F23B077751be80fFE11", + "address": "0x270eC8711dCa04cf5f3FdF10141428065e07194F", "abi": [ { "type": "constructor", @@ -97,57 +97,25 @@ "type": "function", "name": "currentReclaimableSurplusOf", "inputs": [ - { - "name": "terminal", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "accountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "name": "decimals", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", + "name": "totalSupply", "type": "uint256", "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "surplus", "type": "uint256", "internalType": "uint256" - }, - { - "name": "useTotalSurplus", - "type": "bool", - "internalType": "bool" } ], "outputs": [ @@ -169,17 +137,44 @@ "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "totalSupply", + "name": "terminals", + "type": "address[]", + "internalType": "contract IJBTerminal[]" + }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "decimals", "type": "uint256", "internalType": "uint256" }, { - "name": "surplus", + "name": "currency", "type": "uint256", "internalType": "uint256" } @@ -303,17 +298,27 @@ }, { "type": "function", - "name": "recordPaymentFrom", + "name": "recordCashOutFor", "inputs": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, { - "name": "amount", + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "accountingContext", "type": "tuple", - "internalType": "struct JBTokenAmount", + "internalType": "struct JBAccountingContext", "components": [ { "name": "token", @@ -329,23 +334,30 @@ "name": "currency", "type": "uint32", "internalType": "uint32" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" } ] }, { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address" + "name": "balanceAccountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] }, { "name": "metadata", @@ -390,7 +402,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -407,19 +419,24 @@ ] }, { - "name": "tokenCount", + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "hookSpecifications", "type": "tuple[]", - "internalType": "struct JBPayHookSpecification[]", + "internalType": "struct JBCashOutHookSpecification[]", "components": [ { "name": "hook", "type": "address", - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "amount", @@ -438,17 +455,17 @@ }, { "type": "function", - "name": "recordPayoutFor", + "name": "recordPaymentFrom", "inputs": [ { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" + "name": "payer", + "type": "address", + "internalType": "address" }, { - "name": "accountingContext", + "name": "amount", "type": "tuple", - "internalType": "struct JBAccountingContext", + "internalType": "struct JBTokenAmount", "components": [ { "name": "token", @@ -464,18 +481,28 @@ "name": "currency", "type": "uint32", "internalType": "uint32" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" } ] }, { - "name": "amount", + "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", - "type": "uint256", - "internalType": "uint256" + "name": "beneficiary", + "type": "address", + "internalType": "address" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [ @@ -515,7 +542,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -532,32 +559,44 @@ ] }, { - "name": "amountPaidOut", + "name": "tokenCount", "type": "uint256", "internalType": "uint256" + }, + { + "name": "hookSpecifications", + "type": "tuple[]", + "internalType": "struct JBPayHookSpecification[]", + "components": [ + { + "name": "hook", + "type": "address", + "internalType": "contract IJBPayHook" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] } ], "stateMutability": "nonpayable" }, { "type": "function", - "name": "recordRedemptionFor", + "name": "recordPayoutFor", "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, { "name": "accountingContext", "type": "tuple", @@ -581,31 +620,14 @@ ] }, { - "name": "balanceAccountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" + "name": "currency", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ @@ -645,7 +667,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -662,36 +684,9 @@ ] }, { - "name": "reclaimAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "redemptionRate", + "name": "amountPaidOut", "type": "uint256", "internalType": "uint256" - }, - { - "name": "hookSpecifications", - "type": "tuple[]", - "internalType": "struct JBRedeemHookSpecification[]", - "components": [ - { - "name": "hook", - "type": "address", - "internalType": "contract IJBRedeemHook" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] } ], "stateMutability": "nonpayable" @@ -799,7 +794,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1018,72 +1013,72 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x27e54c62bcca0befa1ada3c86619b8a51529b3e806fd365c4d581b3c3b986abc", - "blockNumber": 80970860, + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, "contractAddress": null, - "cumulativeGasUsed": "3529111", + "cumulativeGasUsed": "3592859", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "3529111", - "hash": "0x228b7e770059a12140b8928374e391f0581850add0865495c2469e816e82fdf4", + "gasUsed": "3592859", + "hash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x27e54c62bcca0befa1ada3c86619b8a51529b3e806fd365c4d581b3c3b986abc", - "blockNumber": 80970860, + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8ec75243c96b1e7a72294843c4e5e40f9c99f8259102ff5ea82021b8c1ffb2f7" + "0xe85d633554824d4ca7f3de6a8bc45f269ddf3d1939bee177d15798cce4f19db9" ], - "transactionHash": "0x228b7e770059a12140b8928374e391f0581850add0865495c2469e816e82fdf4", + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x27e54c62bcca0befa1ada3c86619b8a51529b3e806fd365c4d581b3c3b986abc", - "blockNumber": 80970860, + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x228b7e770059a12140b8928374e391f0581850add0865495c2469e816e82fdf4", + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x27e54c62bcca0befa1ada3c86619b8a51529b3e806fd365c4d581b3c3b986abc", - "blockNumber": 80970860, + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x228b7e770059a12140b8928374e391f0581850add0865495c2469e816e82fdf4", + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000088000100000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000080340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000001000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000400000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000280000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplus\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordRedemptionFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRedeemHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be redeemed.\",\"terminal\":\"The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.\",\"tokensRedeemed\":\"The number of tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"useTotalSurplus\":\"Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project whose project tokens would be redeemed.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"tokensRedeemed\":\"The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the redemption.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"holder\":\"The account that is redeeming tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being redeemed from.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\"},\"returns\":{\"hookSpecifications\":\"A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"redemptionRate\":\"The redemption rate influencing the reclaim amount.\",\"ruleset\":\"The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a redemption from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0xfaeee38eee4a977328cb0b365c2cd8bc38021273432a56d1355f31daff2c6a78\",\"urls\":[\"bzz-raw://6d6653aea5db7257bcc8c58a2d50c4e5a428f1ca91ed9f76bb44ce53407ab97a\",\"dweb:/ipfs/Qmf3ft5qXwAVnhH9z9PuQDrZ1m4oi4hGMvvSQPX3jah4DP\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRedemptions.sol\":{\"keccak256\":\"0x19b1a05b1cffbe28768d463eee259e4762ef5d831f4d7234ecd6eea1d14b7730\",\"urls\":[\"bzz-raw://5e03c000ce933109b35a53f32a236ac93e4f915c275deecb19366322a4c14f68\",\"dweb:/ipfs/QmbCc4LaGa7mDWWwzjKcp7vEpzzau8ZTHGPX8LHBRFdxsY\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x55cc7047785810c4aa2c7c3bb964efb9f6acb90e0f51caea237c9e7167ceb8c9\",\"urls\":[\"bzz-raw://75ee887000d9ae2ad4d33385ae75e3deef712e5ef0fc80172d2a464b5b4403ea\",\"dweb:/ipfs/QmaUbGBstbg8NbHLTPpPxV8UhNtf2t7ercVH2TudpkBK69\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordCashOutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.\",\"cashOutCount\":\"The number of tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be cashed out.\",\"terminals\":\"The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"cashOutCount\":\"The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"projectId\":\"The ID of the project whose project tokens would be cashed out.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the cash out.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account that is cashing out tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being cashing out from.\"},\"returns\":{\"cashOutTaxRate\":\"The cash out tax rate influencing the reclaim amount.\",\"hookSpecifications\":\"A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"ruleset\":\"The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a cash out from a project.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0x0751eb635ac791c32260ced6fbb664e3e2d8a4110beac32f36a00279649a4de1\",\"urls\":[\"bzz-raw://ac86bdd5d8be251bdcc1b67e05ffee07af1d7e5db7c966d8bf9e2290c2f2bdf5\",\"dweb:/ipfs/QmSJoVHgoCgQyx2sNojS3qgEiXgyChDCZz1oALZWtXMU8G\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D" ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003b9638038062003b9683398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613a1b6200017b600039600081816103150152818161035901528181610ad801528181610bcc015281816111da015281816114de0152818161164001528181611ab9015261202601526000818161015701528181610c7801528181611e9d015281816123ca01526126e401526000818161023e015281816104b60152818161057701528181610f89015281816112d80152818161137c0152818161157d015281816118cc015261242c0152613a1b6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5316633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e531690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", + "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c16633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c1690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1094,26 +1089,25 @@ "rulesets": "A contract storing and managing project rulesets." } }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { "details": "The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.", "params": { - "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed", + "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.", + "cashOutCount": "The number of tokens that would be cashed out, as a fixed point number with 18 decimals.", "currency": "The currency that the resulting number will be in terms of.", "decimals": "The number of decimals to include in the resulting fixed point number.", - "projectId": "The ID of the project whose tokens would be redeemed.", - "terminal": "The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.", - "tokensRedeemed": "The number of tokens that would be redeemed, as a fixed point number with 18 decimals.", - "useTotalSurplus": "Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used." + "projectId": "The ID of the project whose tokens would be cashed out.", + "terminals": "The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered." }, "returns": { - "_0": "The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens." + "_0": "The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens." } }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { "params": { - "projectId": "The ID of the project whose project tokens would be redeemed.", + "cashOutCount": "The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.", + "projectId": "The ID of the project whose project tokens would be cashed out.", "surplus": "The total terminal token surplus amount, as a fixed point number.", - "tokensRedeemed": "The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.", "totalSupply": "The total project token supply, as a fixed point number with 18 decimals." }, "returns": { @@ -1150,6 +1144,23 @@ "token": "The token being added to the balance." } }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "details": "Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.", + "params": { + "accountingContext": "The accounting context of the token being reclaimed by the cash out.", + "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account that is cashing out tokens.", + "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", + "projectId": "The ID of the project being cashing out from." + }, + "returns": { + "cashOutTaxRate": "The cash out tax rate influencing the reclaim amount.", + "hookSpecifications": "A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", + "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", + "ruleset": "The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable." + } + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "details": "Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.", "params": { @@ -1177,23 +1188,6 @@ "ruleset": "The ruleset the payout was made during, as a `JBRuleset` struct." } }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "details": "Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.", - "params": { - "accountingContext": "The accounting context of the token being reclaimed by the redemption.", - "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", - "holder": "The account that is redeeming tokens.", - "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", - "projectId": "The ID of the project being redeemed from.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals." - }, - "returns": { - "hookSpecifications": "A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", - "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", - "redemptionRate": "The redemption rate influencing the reclaim amount.", - "ruleset": "The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable." - } - }, "recordTerminalMigration(uint256,address)": { "params": { "projectId": "The ID of the project being migrated.", @@ -1234,11 +1228,11 @@ "balanceOf(address,uint256,address)": { "notice": "A project's balance of a specific token within a terminal." }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus." + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { + "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus." }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." + "notice": "Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." }, "currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the current surplus amount in a terminal for a specified project." @@ -1249,15 +1243,15 @@ "recordAddedBalanceFor(uint256,address,uint256)": { "notice": "Records funds being added to a project's balance." }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "notice": "Records a cash out from a project." + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "notice": "Records a payment to a project." }, "recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)": { "notice": "Records a payout from a project." }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "notice": "Records a redemption from a project." - }, "recordTerminalMigration(uint256,address)": { "notice": "Records the migration of funds from this store." }, @@ -1273,7 +1267,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTerminalStore.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/JBTokens.json b/deployments/nana-core-testnet/arbitrum_sepolia/JBTokens.json index 111dec2e..8e0105b9 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/JBTokens.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/JBTokens.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTokens", - "address": "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "address": "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "abi": [ { "type": "constructor", @@ -554,9 +554,25 @@ }, { "type": "error", - "name": "ERC1167FailedCreateClone", + "name": "FailedDeployment", "inputs": [] }, + { + "type": "error", + "name": "InsufficientBalance", + "inputs": [ + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "JBControlled_ControllerUnauthorized", @@ -675,71 +691,71 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x652367feee0a1f523d7302654569e699fa535d9bc0543450ef701a7f6a47ede1", - "blockNumber": 80970789, + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, "contractAddress": null, - "cumulativeGasUsed": "1337727", + "cumulativeGasUsed": "1355589", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "1337727", - "hash": "0x3851916ec4d62fe601b77a3da2dbd0f61ef499b9ade55c23760264a4c17e0d58", + "gasUsed": "1355589", + "hash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x652367feee0a1f523d7302654569e699fa535d9bc0543450ef701a7f6a47ede1", - "blockNumber": 80970789, + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xb4a3a3fb643782b54328f965fb89e52b70559030f4f403cf27957391b8933eda" + "0x9c47a71d0801da3b7ba6313098fe83f4b92007db0bd0c0459e40f1b251412fb5" ], - "transactionHash": "0x3851916ec4d62fe601b77a3da2dbd0f61ef499b9ade55c23760264a4c17e0d58", + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x652367feee0a1f523d7302654569e699fa535d9bc0543450ef701a7f6a47ede1", - "blockNumber": 80970789, + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, "data": "0x", "index": 1, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x3851916ec4d62fe601b77a3da2dbd0f61ef499b9ade55c23760264a4c17e0d58", + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x652367feee0a1f523d7302654569e699fa535d9bc0543450ef701a7f6a47ede1", - "blockNumber": 80970789, - "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", "index": 2, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x3851916ec4d62fe601b77a3da2dbd0f61ef499b9ade55c23760264a4c17e0d58", + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010080000000000088000000000000000000000000000000000000080000000000000000400000040020000000000000410000000000001000000000000000000200000000000000000000000340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000020000000000000000004000000004000000000000000000000000000002280000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000440020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000280000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC1167FailedCreateClone\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedDeployment\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x721dbE852b6b329212F5AEccA1253F291363867A" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161157d38038061157d83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516114a46100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f6201526114a46000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a81565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a9060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df681565b61010f6101dd3660046112ea565b610920565b61015d7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df69060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -870,7 +886,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTokens.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/SphinxConstants.json b/deployments/nana-core-testnet/arbitrum_sepolia/SphinxConstants.json index 2b257507..3d775c0d 100644 --- a/deployments/nana-core-testnet/arbitrum_sepolia/SphinxConstants.json +++ b/deployments/nana-core-testnet/arbitrum_sepolia/SphinxConstants.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "SphinxConstants", - "address": "0x1e03fe41B3bDC81E113F763e83B63336c17c15b9", + "address": "0x1F7eB47e508F03BeDC5660a64D40ba94f53a0721", "abi": [ { "type": "function", @@ -167,80 +167,80 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x461672a643fd22a2f20cb598e822d1014e457b49d523b7460430ae8a59005310", - "blockNumber": 83764640, + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, "contractAddress": null, - "cumulativeGasUsed": "3278678", + "cumulativeGasUsed": "2175280", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", "gasPrice": "100000000", - "gasUsed": "3278678", - "hash": "0x42ebfbaac6a36040c013d95bc8b5c7264654acbcd989cfa4f4f831e51018e8f6", + "gasUsed": "2175280", + "hash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", "index": 1, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x461672a643fd22a2f20cb598e822d1014e457b49d523b7460430ae8a59005310", - "blockNumber": 83764640, + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 0, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x13049ac86d15ac81ed2a95d10ac85191917916a0a65920a2b5c9ad6b99a3bf5f" + "0x211810759b3f197d0a4bcc137e9f165292ccfb142cc718ca0837ebd4fe1f5789" ], - "transactionHash": "0x42ebfbaac6a36040c013d95bc8b5c7264654acbcd989cfa4f4f831e51018e8f6", + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x461672a643fd22a2f20cb598e822d1014e457b49d523b7460430ae8a59005310", - "blockNumber": 83764640, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", "index": 1, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x42ebfbaac6a36040c013d95bc8b5c7264654acbcd989cfa4f4f831e51018e8f6", + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", "transactionIndex": 1 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x461672a643fd22a2f20cb598e822d1014e457b49d523b7460430ae8a59005310", - "blockNumber": 83764640, + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, "data": "0x", "index": 2, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x42ebfbaac6a36040c013d95bc8b5c7264654acbcd989cfa4f4f831e51018e8f6", + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", "transactionIndex": 1 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x461672a643fd22a2f20cb598e822d1014e457b49d523b7460430ae8a59005310", - "blockNumber": 83764640, + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", "index": 3, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x42ebfbaac6a36040c013d95bc8b5c7264654acbcd989cfa4f4f831e51018e8f6", + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", "transactionIndex": 1 } ], - "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400200040020000000000000400000000002001000000000000000000200000000000020000000000300000000000000000000000000000000000000000000000000000000000000000000020000000000000200000000000000000000000000100200000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000002000000000000000000040000004000000000200000000000080000000000000000000", + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000001000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000020000000000300001000000000000004000000000000000000000000000000000000000008000000020000000000000000000000000000000000000000100000000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000200000000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": {}, @@ -251,7 +251,7 @@ "methods": {}, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol", "chainId": "421614", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json b/deployments/nana-core-testnet/arbitrum_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json new file mode 100644 index 00000000..2a5d8864 --- /dev/null +++ b/deployments/nana-core-testnet/arbitrum_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json @@ -0,0 +1,620 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0x27570d5f6ec8d6bae1c986f2efbad1dd3ea27731923c6c52370a577ae0b5088a", + "blockNumber": 104883494, + "contractAddress": null, + "cumulativeGasUsed": "883351", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "181804", + "hash": "0xbb41ccba9fef3b69630e9515751e552179ae7bff3d3b7463c32bcdf4bf6b13ee", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x27570d5f6ec8d6bae1c986f2efbad1dd3ea27731923c6c52370a577ae0b5088a", + "blockNumber": 104883494, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 76, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xf169784e3a9924061fb74c150ab2cf3aef083d956bea8401f0a90b9f13cc0a94" + ], + "transactionHash": "0xbb41ccba9fef3b69630e9515751e552179ae7bff3d3b7463c32bcdf4bf6b13ee", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x27570d5f6ec8d6bae1c986f2efbad1dd3ea27731923c6c52370a577ae0b5088a", + "blockNumber": 104883494, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 77, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "transactionHash": "0xbb41ccba9fef3b69630e9515751e552179ae7bff3d3b7463c32bcdf4bf6b13ee", + "transactionIndex": 2 + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000004000000000000000000000800000000000002000000000400200000000002004000000000000000000000040100000000000000000000000000000003000010000000000001000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000041000000000010000008200000000000000000000000000040000000000000000000000000000020000000000000001000000000000000000000020000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883494, + "blockHash": "0x27570d5f6ec8d6bae1c986f2efbad1dd3ea27731923c6c52370a577ae0b5088a", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003848f38f8350d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b5700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005996d2d810b1a876b40cd6c08ff2bb9f23e717be29fdc173c64461cf951aa02cf821b8830ea9a8dc2ca9325e1a256faa497309e548bf8b7e461f92842bbc980a890b471b9e005c8adfb750de6e0baffe22aabf9bcb625dc77ca406eb08a4c2356cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e07860000000000000000000000000000000000000000000000000000000000000041cd4c557e23ad083f5aa69ad5ba8ab151c6270fb64b1f654055648ac09acea61a158877deed36d265d885ee57df764aefde0b352a4be84c937c4cc0e4060909321c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "196287", + "gasPrice": "100000000", + "hash": "0xbb41ccba9fef3b69630e9515751e552179ae7bff3d3b7463c32bcdf4bf6b13ee", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 248, + "signature": { + "networkV": null, + "r": "0x1fb675920e8ee5f37746ba8ceb57e76c5e70a4dfc40eaa11657b07e0653a551b", + "s": "0x484dd409b89a7d99b52b821ca32b578e8fb7a1eb901364439684fbae4223ee01", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "contractAddress": null, + "cumulativeGasUsed": "2175280", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "2175280", + "hash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x211810759b3f197d0a4bcc137e9f165292ccfb142cc718ca0837ebd4fe1f5789" + ], + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 1, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "data": "0x", + "index": 2, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "blockNumber": 104883645, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 3, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000001000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000020000000000300001000000000000004000000000000000000000000000000000000000008000000020000000000000000000000000000000000000000100000000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000200000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883645, + "blockHash": "0xd0cf9d28c523f22295be931ed3810b08c40473590c9aa2e531c2a7d2c31dedd8", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000026e4e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000025c00000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245cc000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000023e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000507b6422b6353b7cdb6ab938e7ed80e2e485e6713aa00300561697e048fc466bd38cab6fb38ec33e0728d366d3ab8253a5f2ee4caf7f8f2ad4e9b11de2546c3cb1f99132a4ab019e1257c3f06159455bcaa2635462a21e989cb7ab47e880aece94ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e078600000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "2802078", + "gasPrice": "100000000", + "hash": "0x9f074fdbc6f37b0cea39b184f6e6059f185e0d3f52faa35ac41bbc81ddd4647f", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 249, + "signature": { + "networkV": null, + "r": "0xc31ae85fafa2829587f9cfbbe0b40cdf2f472497c9a96805ea511f6a4e271665", + "s": "0x327e9ed5bdbecf31ce6a6653d8006e5503c9ea9780ce4725ee1e593e96c33611", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "contractAddress": null, + "cumulativeGasUsed": "686649", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "443655", + "hash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "index": 3, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 7, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xbe7cf7384bc7389938825c680851edf4f52b378426a58c2b5c4d90c972e89dcc" + ], + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 8, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "data": "0x", + "index": 9, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "blockNumber": 104883732, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 10, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "transactionIndex": 3 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000200400000040020000000000000400000000000001000800000000000000200000000000020000000000300001000000000000000000000000000000000000000000000000000000008000000020000000000000000000000000000000000000000100000000000000000020000000000000004000000000004000000000000000000000000000002200000000000000100000000004000000000002000000000001000000000000000000000000020000000000800000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883732, + "blockHash": "0x722c179a96239778dcca737bc5f73d33c2262bed84a9b7aff37d95324c6de465", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000009c4e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b44a00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000006e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351650000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ccef1bbf30ac4f4cf3902c40468aa0def8b66807d3cdfa11d0433bf221cf651cfde5392ec9fe55653ad9680439a95b9c34b76ffcc1fb6bcf9da6bad0c34b1bbd0dcab9b3f592794213f8b354a9fe3fac0cf2ee8e1e701549ae3129eb3a8f38d44ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "652498", + "gasPrice": "100000000", + "hash": "0x3327899c00496621b301ee5af46d487ff530ad91e903030ae0a8990f0d2c2d36", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 250, + "signature": { + "networkV": null, + "r": "0x3592ee3c2be9d3eacdf9ab849af1f0e41bb5e398ed192e53316c6ff5ae795127", + "s": "0x4527b69865fa008294eceb195187cf9c459b19cf3c035e348b2139a771f0dcce", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "blockNumber": 104883759, + "contractAddress": null, + "cumulativeGasUsed": "216766", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "120658", + "hash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "blockNumber": 104883759, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x025bc7f0c028f8c7c3b00a6f7a0261ea58c4c9f73a44e46fd3e0011470997d58" + ], + "transactionHash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "transactionIndex": 2 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "blockNumber": 104883759, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 2, + "topics": [ + "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000000eeee", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "blockNumber": 104883759, + "data": "0x", + "index": 3, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "blockNumber": 104883759, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 4, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200410000040020000000000000400000000000001040000000000000000220000000000080000200000300001040000000000000000000000000000020000008000000000000800008800000000000000200000000000000000000000000000000100000000000000000020000000000000000002000000004000000014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883759, + "blockHash": "0x6071d1cfe17bc210275e022d181aa460ca9f40a75eba948d46156fe661d80177", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000364e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001800000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002682d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084c6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004fe7a3fbc4ef79d3171590520d811792a16a75837c11809b40b81d81e437dbe090a308bd95adfadd32639ebc16fd65f0d4a6dda61160a644d596968601c33e8526e1fc8703e9253ae2ce254a653629c2c8cb62e6969c85a634b3f9ed47b6051b64ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "248711", + "gasPrice": "100000000", + "hash": "0x18e6f4b1af3440bdf01f3cce87c9a78d9b4fa28ec0bd258a82526e50d2378683", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 251, + "signature": { + "networkV": null, + "r": "0x355d9afaba61dae0b5ec56a4749ed84362d8dfb162d180166b2829f74aeb9f0c", + "s": "0x03f381cb15b04202eace0d1b575436487e9783f962e72b1221adde9ea1cd0c03", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, + "contractAddress": null, + "cumulativeGasUsed": "249478", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "249478", + "hash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xca1b7276f725d21e8a052fab5ec142149071ab510b0b38aa5fc717a3785a94e0" + ], + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "blockNumber": 104883787, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000001000000000000000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000000000000000300001000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000100000000000000000020000000010000000000000000004000000800000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883787, + "blockHash": "0x0ede48d0ff092020d3b6f51fb050dac0e35bf7b42ee3170bb6c6caec634e140f", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000584e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049c9300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000576ee009faa50a3b6e410f108671a7a8ae2b0d2fc6d595f5e58ae584787d02ec5f3cf3192b90697d786eb5542df233b78ad61ca1d363efcbd2ea6689b495e18db766e001a3a98aa57ea4f5856f819498e732de201fda4d293600a09d1ea621af6cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e078600000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "416640", + "gasPrice": "100000000", + "hash": "0xaa8233fa04b9b20d2d4b6fbcf21e04dd458d1b77f5516171b46029feaefa5d6d", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 252, + "signature": { + "networkV": null, + "r": "0x47b0804c4c6e785c280b3a7a3d1e5c94540d8c8a8d9f26a7adab62fa980fcce4", + "s": "0x3e8275669c1f9c725486aebd968a67539c4945eef6f143fb5bf6909e26114c23", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, + "contractAddress": null, + "cumulativeGasUsed": "250584", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "250584", + "hash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x39f4e84150528173ab76276cc6fcf79aa862e7bbee1217196fe6c623142f580d" + ], + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "blockNumber": 104883824, + "data": "0x", + "index": 3, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000200400000040020000000000000400000000000001000000000000000000200000000000000000000000300001000000000000000000000000000000000000000000000000000000008000000000000000000000000000008000000000000000000100010000000000000020000000000000000000040000004000800000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000000000020000000000000000000000000000000048000004000000000200000000000080000000000008000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104883824, + "blockHash": "0xe8ed199a38fcbf571a07908f217dde4ffaf8895e11f446be397328d08ee9eefa", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000564e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490db00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004b3a0ecd1b3beecca7308085256864ce4a52a6656e917574c47c7f3cc2bcd0d6001f8eadc67cf7aa658eabae4772280b6db40fb7531426d16fbd24568a89933e40dcab9b3f592794213f8b354a9fe3fac0cf2ee8e1e701549ae3129eb3a8f38d44ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "410444", + "gasPrice": "100000000", + "hash": "0xb76dcad3ac825db1dd05cf9803fd644b8ec9002ebc10e9b613e3c582f975be5f", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 253, + "signature": { + "networkV": null, + "r": "0x95b6e0aaeea563ead0f578ecb0d104b3434148f091f8a5924fa1eeb804c7a9f2", + "s": "0x209a2acd16eac9c44600183dbce538eab29ef8d3bf7eaf9ae24eae5e06716ebf", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "5", + "chainId": "421614", + "actions": [ + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000", + "gas": "2383040", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033000000000000000000000000d30e2101a97dcbaebcbc04f14c3f624e67a351650000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000", + "gas": "504906", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "value": "0", + "txData": "0xc6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "gas": "157741", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "gas": "302227", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "gas": "299227", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/arbitrum_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json b/deployments/nana-core-testnet/arbitrum_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json new file mode 100644 index 00000000..7a649fbf --- /dev/null +++ b/deployments/nana-core-testnet/arbitrum_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json @@ -0,0 +1,1609 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0x340a3ebe3c592e6170fb810b1cf53d717a77e804d7ada767911de843db77e281", + "blockNumber": 104882293, + "contractAddress": null, + "cumulativeGasUsed": "245174", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "183693", + "hash": "0x34d41ad72ea3da45bb09fbdb9cd05faa2b56ec9db84c35224c4eb5dcc8b4545a", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x340a3ebe3c592e6170fb810b1cf53d717a77e804d7ada767911de843db77e281", + "blockNumber": 104882293, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x985df1f5d65c07571ada5faf6b98186d91e4f9d95c7728c9d1d7a5af408b85c9" + ], + "transactionHash": "0x34d41ad72ea3da45bb09fbdb9cd05faa2b56ec9db84c35224c4eb5dcc8b4545a", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x340a3ebe3c592e6170fb810b1cf53d717a77e804d7ada767911de843db77e281", + "blockNumber": 104882293, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "transactionHash": "0x34d41ad72ea3da45bb09fbdb9cd05faa2b56ec9db84c35224c4eb5dcc8b4545a", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000002000000000000000000000000000000000000000000000000000080000020000000000000000040020000000000000400000000000000000000004000000000000000000000000000000000300000000000c000001000000000080000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000200000000000000000000000000040000000000000000000000000000020000000000000001020000000200000000000020000000000000000000000000000000080000200000000000000000000000000000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882293, + "blockHash": "0x340a3ebe3c592e6170fb810b1cf53d717a77e804d7ada767911de843db77e281", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003a48f38f835732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067044863958fb43bd975544f2f032f213f8023c9c0261ecb74a89633608c8c1bc1cacd01e10481c20ad8ded0f65359819c8c10a8fa0297c1674ec27400f13cbb07e0fd992c4eb1c0e6654911b6616d62659a83cc1eb67349f400d988ced239380cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004191987533e4effa4a831fc32a15bf073d02ab57f87e144fb2a0817d9899b6b45527e1753c2152dcd598b74b901ffda9124a88d4232d0fce47c4d96f4d83d250731c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "198383", + "gasPrice": "100000000", + "hash": "0x34d41ad72ea3da45bb09fbdb9cd05faa2b56ec9db84c35224c4eb5dcc8b4545a", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 232, + "signature": { + "networkV": null, + "r": "0xb82ac65b0d58ebad5e68f6e7bf4dc1e0d0cc6ed14253c69eb62aab39c02259e8", + "s": "0x74ab913ec9a8ab2bc7abcb3ae68268e58427d71cec0956e3a5af45a742c8600a", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, + "contractAddress": null, + "cumulativeGasUsed": "646604", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "646604", + "hash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x3e088ed36ced9cedebbb7f2fc1170ba65cdc037cbb05a8d30e6f6b95b28cd4a3" + ], + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "blockNumber": 104882363, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000008000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000800000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882363, + "blockHash": "0xc7ba492481b16566838fd14d4150c8a60677951d82f03d6a647886e0111c0233", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000c44e65ec46d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b506a00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000939df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000684a18d86fb6caa84ebdaf28975e0a5f8009dbcf40ea24c3bc540ab18e0e1c9c83f4e4c2c859b80c3fe3aeac59a6a5a343a7e00928d84420a308232592bb29cc1115cc7a7e90793e69e3a00be657bdab493ab5558a06f9be948cdf0ed5b7d7edc9dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "928560", + "gasPrice": "100000000", + "hash": "0x8179d9ba199755ad9351a1a5170e22b1f2a07027c2c1774d1137f2504f75fc72", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 233, + "signature": { + "networkV": null, + "r": "0x2e3a4f2cffcc9936ccd9f3af85f66eba2404a2633807aada06a0b2a5b6d51636", + "s": "0x3ec6f42845b9073115097d5af1a50e0c857c7a5ec6617ce4bafc7a245dda52c3", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "contractAddress": null, + "cumulativeGasUsed": "1440835", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "1351388", + "hash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 2, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x2cf067bdefeacbb4498d9ad2422d555880b57a6dfdb7fc0b8afae97a35e32abc" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x", + "index": 3, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 4, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x", + "index": 5, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x", + "index": 6, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "blockNumber": 104882408, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 7, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000010000000000000080200000000000000000000800000000000000080000000000000000400000040020000008000000400000000000001040000000000100000200000000008400000000001300080040000800000000000000000000000020000000000000000000800000000000000000000000490000000400000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100400000024000000000002000000000000000000000000090000000000020000000000000060000000000000000040000004000000000200080000000080000000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882408, + "blockHash": "0xf4f6eb0e12182e395d24123d4b4a51926beff4ea5120b8f7348eef9194cdcf9b", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001e84e65ec46d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001c600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015f64800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001b69df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000685fa8fc5df8a8cb5238d077e21b3ab0c9271b5dde50d6c047f860e8d472c3be8aeac2bacbcf46f965339cef36464873a1e9a237f30b6b27a3440aa522f89d3da115cc7a7e90793e69e3a00be657bdab493ab5558a06f9be948cdf0ed5b7d7edc9dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1764909", + "gasPrice": "100000000", + "hash": "0x034e06bfe33b02b16073247e49dee0aa5b84f6031c9be0cd827128ec1b7b7c9e", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 234, + "signature": { + "networkV": null, + "r": "0x5b5a0bd9aadbd76e2580e06b2d2b16d2f51cc5aa0051d8dffe20de11a94782a2", + "s": "0x27a566bac718b239ed4522d5309dbb16ffc6007d295108718c73f1694eccf13e", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, + "contractAddress": null, + "cumulativeGasUsed": "1467260", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "1467260", + "hash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x3d0641a63509300aa0c0651f36caa413851913b0e0ec6b62cdf4a0cb21720641" + ], + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "transactionIndex": 1 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, + "data": "0x", + "index": 1, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, + "data": "0x", + "index": 2, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "blockNumber": 104882461, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 3, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "transactionIndex": 1 + } + ], + "logsBloom": "0x80000000000010002000000000080020000000000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000001300080000000800000000000000000000000020000000000000000000800000000000000000000000000000000400000000000000200000100080000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000004000000000000000000020000000000000020000010000000000040000004000000000200080000000080000000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882461, + "blockHash": "0x70db045184f0246e77c55f6e272265ee35bb96f3a5e2446ef955f723192e75e9", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001ba4e65ec46d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000019800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018556400000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001894df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000066f16aabc6d01f0faab8ad2ecfbc09bb53e158c5747f969f61b018cd284788e95ae27f954ed7b7b159283ab6a20f8dbef2801a7553861b2968eb43f99a019d4de7e0fd992c4eb1c0e6654911b6616d62659a83cc1eb67349f400d988ced239380cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1915249", + "gasPrice": "100000000", + "hash": "0xcdd89c29308a5ed418ad388c2855bad4413f0a3e4b0f41c737027a64e5ca3544", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 235, + "signature": { + "networkV": null, + "r": "0x252a21c2516a9cf6140d7b6fc2c8b27ee85f78e74b42f97c31554680d663a9ba", + "s": "0x624bc414f515d87bce648abbcb30d329b07110deff0b9a39d15b2847857a4ebe", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, + "contractAddress": null, + "cumulativeGasUsed": "882644", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "882644", + "hash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x6eb40c57d30dcbfab530092c1432b61dabc5a2ba2b73f7b509ca25b05116af1c" + ], + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "blockNumber": 104882489, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000020000310000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882489, + "blockHash": "0x738e5ae6dcf037f35186149bd9e1f8529088e8d35299491283634928c810c4a5", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010e4e65ec46d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000ec00000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ed68500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000dcddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069bb3ab2bbb6cfc339bbdd27713ae4aae66c36fa62ea817ff91f7da5ad45bdf673cc61778ea176473400313160eb29f80b0083a1c22aa217cca2f8acec3d8839d2662686d2f38f0f4addc8fdd4af28744f85de7517008938b7e1b6c2824865e7c5590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1195893", + "gasPrice": "100000000", + "hash": "0xbb95ce997f9d2c6253e4f9300f64f5b829577748bdd37486b4a0ea428944965d", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 236, + "signature": { + "networkV": null, + "r": "0xe7b6e24c65feb914ed213196634982f9c910497d7968e76f046822e8e0242145", + "s": "0x2f84edd9f7cbeb2a80fda232991ae4c47653a73d15dbc850005c7dec20875bc6", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, + "contractAddress": null, + "cumulativeGasUsed": "1915951", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "1915951", + "hash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x031bd4b4eb907a604404f880b69ecca9c978160d3913edd2d4b07e4d10e185ee" + ], + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "blockNumber": 104882535, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000200000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000200000100000000000000000020000000000000000000000000004000000000000020000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882535, + "blockHash": "0x9bd5f09c13a55409d7e5e5036f39b37f1ba27a9e5c163a50933ce4672579f4cf", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000022a4e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000021600000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000020800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd96b00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001f85df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060346632a8904beeee00e8c532c05b3fa75c18863b332ceb78b5413ddf1a1edfbe47f6f6d6cbdb592929a8e335d7e324f423a66557189418e93b07b07318cc62914c12b8cfb327126393f9541a576e49e4560d8444869b5cad1d745db556126f73d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "2469578", + "gasPrice": "100000000", + "hash": "0x723a8558d3802db3e5707417338bd838ca7babbc26a69e0693d4af67108b8cb8", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 237, + "signature": { + "networkV": null, + "r": "0x919ea91b1def38e37f60c8c19f29314cb1bc1e62bd7ccc5fee4adfc5e3245962", + "s": "0x0862f0a7811f2c2b23de010ebfa4b60fa4f17306eb130d420ad85508d62ebeb0", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, + "contractAddress": null, + "cumulativeGasUsed": "861508", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "861508", + "hash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xec2813534df44dd2364213497d9cf8feba8452db60a698313f40f17ae4ec6b27" + ], + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, + "data": "0x", + "index": 1, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, + "data": "0x", + "index": 2, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "blockNumber": 104882598, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 3, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080040000200000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000220000000000000000200001300080000000800000020000000000000000020000000000000000000800000000000000000000000000000000400000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000008000000000000000020000000000000020000000000000000040000004000000000200080000000080000000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882598, + "blockHash": "0x278b52c52e4c3c4a5a669cc32bdb076cefac5284de10374e575a2d9a57391208", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001144e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000066eee0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000f200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e67f100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000e3cdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000000000000000000000000000000000000000000000000006f69d97d983df7abbe67aaa3863a20cd46d505a4bb8c8ceab5d56dd53899b43c6552355eab0dd17fd9af2b8f00a4760c85212ba7870e7be03f83f81fc46f3e2afd276f538e9ae02000223bc714a3f963760f807e802e623c0e4598446b2b055825eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1167329", + "gasPrice": "100000000", + "hash": "0xe22a5fdb9aa66930c51174481a25d6df93b751ec868639f98cf20db02b8f6b15", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 238, + "signature": { + "networkV": null, + "r": "0x21b868bf9d5186aafbfcc76b5a6024cb0c4b7dbc924b9bd8cc53da5a179ceac4", + "s": "0x0a30374fb9011f73f5563c6962f5fb24e9178840193783c31957c339df2e8d91", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "contractAddress": null, + "cumulativeGasUsed": "2692302", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "2239067", + "hash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "index": 3, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 9, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xeb3cf80c1375edf1b12f5cbc86d1f7986da193dff024def6eca50f44621a1de2" + ], + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "data": "0x", + "index": 10, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "data": "0x", + "index": 11, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "blockNumber": 104882639, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 12, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "transactionIndex": 3 + } + ], + "logsBloom": "0x00000000000010000000000004080000000000000000000000800000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000080000000000001300000000000800100000000000000000000028000000000000000000800000000000000000000000000000000480000800000000200000100000000000000000020000000000200000000000000004000000000000000040000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000001020000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882639, + "blockHash": "0xfc14752715c4a0614bd93114e5fda82cb91f4430c62729e29190d6c6e5c0410c", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000002a84e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cd2000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002766df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006bf4da7f9eb3a62d93758abda8750478055c44ce59f110aa02951456374b008a00f3393ebc32a383457e27afd2a6bcc3e3346e2575efdb5ebad32d7ed365beb9d896e63884df4bf0fb192763bef921fec6f024f75982b2fb0ade1089255d3d11de10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "2885793", + "gasPrice": "100000000", + "hash": "0xee17e605c0d73f0e969ab5b48812cff4fe8e3efaf73fce51c1e66c5136248343", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 239, + "signature": { + "networkV": null, + "r": "0x54672a3cd1020a6425fe4cd75809cc67546d04361a3fd68a7cd09d419d547c9b", + "s": "0x5713b97feccd8aa6fda2d9a66ea9e47b20bc582e444e3bf20d0e4f05e95a74fb", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, + "contractAddress": null, + "cumulativeGasUsed": "1355589", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "1355589", + "hash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x9c47a71d0801da3b7ba6313098fe83f4b92007db0bd0c0459e40f1b251412fb5" + ], + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "blockNumber": 104882667, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000440020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000280000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882667, + "blockHash": "0x81ace23a973b3d47ef79af4ef62647eb5b8b7d27f6dbef14d71e08346caa8dd3", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001964e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000018200000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000017400000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168f6000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001648df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006833b844fdb164fe3c49a07ac215ef5397f647efa19e5c66d02c80fd9ee9e8ed09f036786036626c6cb749e9e03482c6e938ace0c9b351c1c23dff78522c92435dd14bfb844506ca5b09733b6d26a61e48a6bb5d2c5c5f417c88a9bfc1c609fe7cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1791384", + "gasPrice": "100000000", + "hash": "0x22e989ac94b8ee98d9718fc19c7b67cd4ea8b9f9081949a4b7afa7fb4e918ddd", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 240, + "signature": { + "networkV": null, + "r": "0xd842220b94a2557e0e7f26aac4d0ed2dcbdb6afd96535954ad3077d2dc50c370", + "s": "0x79840138c81ab598ae907d3ab0591f238e89cc35d8096f3306ff9363787988fb", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, + "contractAddress": null, + "cumulativeGasUsed": "1128630", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "1023076", + "hash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "index": 3, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x9c47275f23977415d0c20656c30cea2a0fdbf0e52f762f7233bf1f78a868bab7" + ], + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, + "data": "0x", + "index": 2, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "blockNumber": 104882702, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 3, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "transactionIndex": 3 + } + ], + "logsBloom": "0x00000000000010000000000000080000000002000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000020000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000004000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882702, + "blockHash": "0xd376c0497b124a0a6631d38ae53888fa5e1d6e905173f9a3091a5ca4cc6325e4", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001344e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000066eee00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000011200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011285d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000103ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7500000000000000000000000000000000000000000000000000000000000000000000066e95039ce89da52fb37406503f832a306ba42e4d8d56ae5f5987e23875b0b0b051c1e252cf6e863ed4995b9b7a4e376944f71a703e2c04fccee1ba0fd4aad8d7faede6f80e1abd301c798f069a3d47d9faf3638cbbd4f1a11832ccf8f4c18ad13ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "1369045", + "gasPrice": "100000000", + "hash": "0x88ef3aab892f16dc33af804cbb0be9465db626f3b321e5f6e5b212247f7d910a", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 241, + "signature": { + "networkV": null, + "r": "0x9ad200b161053e416b4b0ef4042bc858be1b7ab310f3bf9b8f3d0b9f55cb2f9f", + "s": "0x6d05ddb9fb6ec7d638e3a401bed19fc71335bfe960b712cc0a0ac3be31f744c4", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, + "contractAddress": null, + "cumulativeGasUsed": "5541602", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "5509211", + "hash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x03c77d689859b7c179081f54fa7148f6bc6909767a9310d9b59ce2a0497d20a9" + ], + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "blockNumber": 104882731, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000004000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000001000000020000000000000000000000000000000040000204000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882731, + "blockHash": "0xe600001b5b49c5e25574ccf949f9e7603bc79fa53b57223291ee9529e79c8736", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006384e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000062400000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000061600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b747300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006079df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a870000000000000000000000000000000000000000000000000000000000000000000000000000065e07e9a50e8efb84c3444e31d9817261689f54d5d64c17949a1566b5b320d2bddfad4df836116f9d3d3bd9b10c3a859c911cbed3a52e74fe2f367e9f09512619faede6f80e1abd301c798f069a3d47d9faf3638cbbd4f1a11832ccf8f4c18ad13ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "7006485", + "gasPrice": "100000000", + "hash": "0xbb02c26b94cc7629be329bb8f3667ddc8bfbd14210713293f7fe5ddeac1cdb39", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 242, + "signature": { + "networkV": null, + "r": "0x2883d4491aaa977ac663c79ce34621680f546c16167dd0c79bb2ae8bccb9c306", + "s": "0x0bf2967b8b8b6475c39d89c26ad960b5c0efe76581f6b4b004ce600f18543446", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "blockNumber": 104882775, + "contractAddress": null, + "cumulativeGasUsed": "173060", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "118296", + "hash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "blockNumber": 104882775, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x0a47ae5eda6d30f15b36cf32afd96c6f940d122b05b02d9a069e767fec58b20b" + ], + "transactionHash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "transactionIndex": 2 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "blockNumber": 104882775, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 2, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "blockNumber": 104882775, + "data": "0x", + "index": 3, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "blockNumber": 104882775, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 4, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "transactionIndex": 2 + } + ], + "logsBloom": "0x0000000000001000200000000008002000000000000000000000000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000230000004000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000010000000000000000002000000000000000000000003000c000000000000000000000000000002200400000000000100000000024000000000002000000000000000000000000000000000000060000000000000040000010000000200040000004000000000200000000000080040000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882775, + "blockHash": "0x5c72da3b8fd32578a8002082c7915c4c9094e0e68fe0885b4825b48911b973b6", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000364e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000251be00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000044a1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000673ada372fb3baaef2071c199750d2e35e5aed0f5c6efbce49d83b005e7bf9b9b76db58b4ae3b0bc97b704b93c5117dc32a06911177cb8a6503eeb3a1fb3935c2dd14bfb844506ca5b09733b6d26a61e48a6bb5d2c5c5f417c88a9bfc1c609fe7cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "245998", + "gasPrice": "100000000", + "hash": "0x9219224834a494e8f94be9ec650f1e1d18567381907126e50311eeb8253bc799", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 243, + "signature": { + "networkV": null, + "r": "0xa63f51c7e6e700bbd14c825f93ed179d52a27ff2620539fe05bda092d8538bfc", + "s": "0x53fdd24f02f6cf7ce410bb246d531d2569ec66fa3dc0b4bf3447299072cd766c", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, + "contractAddress": null, + "cumulativeGasUsed": "465485", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "348706", + "hash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x965d3372f1e6d3438373f20c2308b921ee43891d40785a1285a528c17b88e1c4" + ], + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, + "data": "0x", + "index": 2, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, + "data": "0x", + "index": 3, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "blockNumber": 104882802, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 4, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000800000000000000080000000000000008400000040020000000000000400000000000001000000000000200000200000000000000000000001300080020000800000000000000000000000020000000000000000000800000000000000000000000000000000400800000000000200000100000000001000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000010000000000000000000000000000020000000000000020000000000000000040000004000000000200080000000080000000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882802, + "blockHash": "0xb8871ff78da357d442c6c30cf266866a0c7bce948853f65f825c4e9ff2a2a91a", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000007a4e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006123900000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000490df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064b1e9ebf074b35fea56893dffc5558dca67a519a66a42c09e173afee09227828aa695a1a143af09324902709f3fe5718f918d9f97ca63f994f82d73434a3c3c320b2b7852c2a7ce860c00e74efdaa8b934fc29514a1d675969810828147131763ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "530469", + "gasPrice": "100000000", + "hash": "0x4ae80a183f8ecabc090b9e28628e2ef4f0149f60f9b3d2ba551b79bb08e6d1b6", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 244, + "signature": { + "networkV": null, + "r": "0xf80e94fce21c70458fa4911e34dbbcb239e7aecd91952c9b602434ce60776356", + "s": "0x63666761e2ec601e35e2885ddf14c1efe2975d754494486ae6ea5648ae9d4aea", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, + "contractAddress": null, + "cumulativeGasUsed": "3592859", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "3592859", + "hash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xe85d633554824d4ca7f3de6a8bc45f269ddf3d1939bee177d15798cce4f19db9" + ], + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, + "data": "0x", + "index": 1, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "blockNumber": 104882842, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 2, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000000000000000000000000080000000000000000400000040020000000000000400000000000001000000000000000000200000000000000000000000300000000000c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000400000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000280000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882842, + "blockHash": "0x94268bfe616c8317fc009cbb69d46d8766ca1c587ac718870fecd2c0df857720", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000004084e65ec46d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000003e600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b23b700000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000003d6ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068db68f8a0cd754e95025e4a5f94cb08776bd9d948eb45c0a208f3c86b817512ead811485a9435054b71fbe984a011801cf726813e105251d7001db31b0f934df81fd8ec49bc8b5996324223bdd0eff15363f4f1cb6774631e33fc62ac39ab4539dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "4570167", + "gasPrice": "100000000", + "hash": "0x04181dcc1a5510016fa5a7b2279875135193e22304e74228b38676a0c2ea33d0", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 245, + "signature": { + "networkV": null, + "r": "0xa7356f00940cc1333bbef2e12482b3810d830500c4d0f01d0ab92f2ecd973d84", + "s": "0x644110a31687b68cd9c62f408bd801e266036006d84691efa7bb2e3abad5d356", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, + "contractAddress": null, + "cumulativeGasUsed": "5723684", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "5634240", + "hash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "index": 2, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 2, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x433467a6c58b1482494d56be7cdfe14a146332a1612c2477dec67d2209f2ab1c" + ], + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, + "data": "0x", + "index": 3, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "blockNumber": 104882888, + "data": "0x000000000000000000000000000000000000000000000000000000000000000e", + "index": 4, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "transactionIndex": 2 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000001000000000000000000000000080000000000000000400000040020000000080000400000000000001000000000000000000200000000000000000000000300000000000800000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000200000100000000000000000020000000000000000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000000000000000020000000000000000000000000000000040000004000000000200000000000080000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882888, + "blockHash": "0xaf99b31e7fb45755ce0bbbbe11334026dcc311075515f8ea9f5962defe27e8ad", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006584e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000064400000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000063600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c220d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006265df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a870000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a82fc0663a098089e5995949dd00c38bb7e552043a06a42fddd30461990fd2435d67eb4b6cab1f997e771bd0c31a4f9b08bc2589a6b8d0feff4d571abda9160475ced2eac0c6e359339679bcb73c52d7a999345ca9075f2b81199060e65d4df35590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "7076393", + "gasPrice": "100000000", + "hash": "0xb1139ba669d4e1ac9d5b152da093f624abe0e227c448abde4c319a8c01ed10a6", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 246, + "signature": { + "networkV": null, + "r": "0x3c3b6abb5564ddcacb520de96d4388dbcffaae868e5db7b8ce6c7d1c160c5f1d", + "s": "0x35ecca87d03d342c9b0984fa4e73e7c5cc6165935b589eccea74b65990f54272", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "contractAddress": null, + "cumulativeGasUsed": "139717", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "100000000", + "gasUsed": "139717", + "hash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x43d04b1a7f9d44bf7525d3f8730c795077bdd1ba3c6d2807873ee94a1e4ac94f" + ], + "transactionHash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "transactionIndex": 1 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "data": "0x", + "index": 1, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "transactionIndex": 1 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "data": "0x", + "index": 2, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "data": "0x000000000000000000000000000000000000000000000000000000000000000f", + "index": 3, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "blockNumber": 104882930, + "data": "0x", + "index": 4, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "transactionIndex": 1 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000008000000000000000000081000000000000000400000040020000000000000400000020000001040000000000000000200000000008400000000000300080040000800000000000000000000000000000000000000000000000000000000000000080000410000000000000000000000200000100000000000000000020000000000000008000000000004000800000000000000000000000002200000000000000100000000024000000000002000000000000000000000000080000000000020000000000000040000000000000000048000004000000000200080000800080000000000088000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 104882930, + "blockHash": "0x27c530c7ff16ca4ee1233e1fe7f91e3acd3ceda27e5b372f870fee2b558c2fa8", + "chainId": "421614", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000384e65ec46d000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000066eee000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000266ce00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066f39a7c43a3dd87be726a8cffe16958d8428393ddc2c93dc48c6d31e6f510c8cae27f954ed7b7b159283ab6a20f8dbef2801a7553861b2968eb43f99a019d4de7e0fd992c4eb1c0e6654911b6616d62659a83cc1eb67349f400d988ced239380cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "251036", + "gasPrice": "100000000", + "hash": "0x78f2b3bbdc245cc459184d615421217a0c53c4009f57e48108b543eb7781807a", + "maxFeePerGas": "200000000", + "maxPriorityFeePerGas": "0", + "nonce": 247, + "signature": { + "networkV": null, + "r": "0x34d409bcbfc1bfb5f97761af67c86886e5e8ba0aa5cc744f05aa1a97d0af5ed7", + "s": "0x7080f5f2460d7790b02372047d4a9cdbee4043fcbfecde60dde279221708a3a0", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "4", + "chainId": "421614", + "actions": [ + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "gas": "741482", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1439304", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1594724", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "972421", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "2087275", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "944113", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "gas": "2411808", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6", + "gas": "1478496", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "1124445", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "5993587", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "value": "0", + "txData": "0xa1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001", + "gas": "151998", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "397881", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d", + "gas": "3875767", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "6038029", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "value": "0", + "txData": "0x42842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb0000000000000000000000000000000000000000000000000000000000000001", + "gas": "157390", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/base_sepolia/JBChainlinkV3PriceFeed.json b/deployments/nana-core-testnet/base_sepolia/JBChainlinkV3PriceFeed.json index 1e05d4c7..293d933d 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBChainlinkV3PriceFeed.json +++ b/deployments/nana-core-testnet/base_sepolia/JBChainlinkV3PriceFeed.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBChainlinkV3PriceFeed", - "address": "0x102d93b7860f1927c40B0B1C12264fec5318B0D1", + "address": "0xb340efaB9AC83C42882F78ef6Fc6f177A7f63123", "abi": [ { "type": "constructor", @@ -103,227 +103,227 @@ ] } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "contractAddress": null, - "cumulativeGasUsed": "4324498", + "cumulativeGasUsed": "3804154", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000269", - "gasUsed": "2958039", - "hash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "gasPrice": "1000268", + "gasUsed": "2960466", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 6, + "index": 13, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdadf428aae963d665048154e6e5d2f7af5a4a4adf3d5f830e97aad59505196bc" + "0xbb10315a7fff8911da286048705204539079c72b176a8169c583b3062c1fc3c6" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 7, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 14, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 8, + "index": 15, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 9, + "index": 16, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 10, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 17, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 11, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 12, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 13, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 20, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 14, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 15, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 16, + "index": 23, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 17, + "index": 24, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 18, + "index": 25, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 19, + "index": 26, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 20, + "index": 27, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000080000000000002040200000000000000000000080000000000000000400000040020000000000000400000000000001040000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000101000000804000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200040300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000100000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000400008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0x4aDC67696bA383F43DD60A9e78F2C97Fbbfc7cb1", "3600" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb181565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb16001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb16001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb181565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb16001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f0000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb16001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -359,7 +359,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBChainlinkV3PriceFeed.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBController.json b/deployments/nana-core-testnet/base_sepolia/JBController.json index 3dcd2662..c36c863a 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBController.json +++ b/deployments/nana-core-testnet/base_sepolia/JBController.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBController", - "address": "0x219A5cE6d1c512D5b050ad2E3d380b8746BE0Cb8", + "address": "0x74fc0e2cB3Eb5A2742f8B9F0D6F1263dD3664b5D", "abi": [ { "type": "constructor", @@ -249,7 +249,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -276,7 +276,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -330,11 +330,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -346,7 +341,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -356,7 +351,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -480,7 +475,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -507,7 +502,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -561,11 +556,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -577,7 +567,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -587,7 +577,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -730,7 +720,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -757,7 +747,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -811,11 +801,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -827,7 +812,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -837,7 +822,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -922,7 +907,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -949,7 +934,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1003,11 +988,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1019,7 +999,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1029,7 +1009,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1088,7 +1068,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1108,7 +1088,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1162,11 +1142,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1178,7 +1153,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1188,7 +1163,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1385,7 +1360,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1405,7 +1380,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1459,11 +1434,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1475,7 +1445,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1485,7 +1455,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1758,7 +1728,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1778,7 +1748,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1832,11 +1802,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1848,7 +1813,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1858,7 +1823,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2295,7 +2260,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -2322,7 +2287,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -2376,11 +2341,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -2392,7 +2352,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -2402,7 +2362,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2893,33 +2853,6 @@ ], "anonymous": false }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AddressInsufficientBalance", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBController_AddingPriceFeedNotAllowed", @@ -2932,7 +2865,7 @@ }, { "type": "error", - "name": "JBController_InvalidRedemptionRate", + "name": "JBController_InvalidCashOutTaxRate", "inputs": [ { "name": "rate", @@ -2988,6 +2921,22 @@ } ] }, + { + "type": "error", + "name": "JBController_OnlyFromTargetTerminal", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "targetTerminal", + "type": "address", + "internalType": "address" + } + ] + }, { "type": "error", "name": "JBController_RulesetSetTokenNotAllowed", @@ -3072,437 +3021,503 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidRedemptionRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0xd1f668827821ddb22398c30b8f258656f872299eacccc2ee13de91cad1e790a0\",\"urls\":[\"bzz-raw://3b80629f0ba8cab2e936e53a45db851cdf3616b73578ab381777e75dabfaf9cb\",\"dweb:/ipfs/QmZQ888nqPY9XRg2HgefVwYAaT4jeGUBWcbhjL6SiBqtvi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidCashOutTaxRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetTerminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyFromTargetTerminal\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0x3d6b6d7c8e116065e8b66939d7013341404741e79b15201e4291fd9478302e13\",\"urls\":[\"bzz-raw://8b03a02c3310559f927934465790c5dd04905def3973176a23dfe8398279da65\",\"dweb:/ipfs/QmeeZpdEjwCzPSJrJNwjMrZq9kGv5o5HL4o7eLTXAivLfL\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620060a7380380620060a7833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615d7d6200032a6000396000818161027a0152818161095701528181610bc40152818161102601528181611582015281816116e901528181611b9401528181611fa10152818161223e01528181613036015281816130b80152818161322401528181613377015281816133fe01526135bf0152600081816102e001528181611e5201528181612aa00152612f390152600081816105900152818161072701528181610da6015281816110e50152818161175a015281816126bf0152818161297f0152612c9f015260008181610328015281816107c901528181610c7d01528181610d1201528181610f460152818161123d0152818161135a015281816119e301528181611ccf01528181611dc001528181611ea701526121810152600081816102b901526108b201526000818161062a0152612b2701526000818161048f015281816109c501528181610a0701528181610e5401528181611408015281816118670152818161287401528181612bfd01526132de0152600081816103ee0152818161046601526138600152600081816105f001526125ef0152615d7d6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6106203660046145c5565b612002565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b61029c7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61035d6106203660046145c5565b612002565b61029c7f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f881565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e53169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c1690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f43169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc849091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f8169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe6001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a871614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", + "bytecode": "0x6101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b61029c7f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc81565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f9091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e1690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab256001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -3610,7 +3625,7 @@ "ruleset": "The struct for the project's latest queued ruleset." } }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3623,7 +3638,7 @@ "projectId": "The project's ID." } }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3655,7 +3670,7 @@ "beneficiaryTokenCount": "The number of tokens minted for the `beneficiary`." } }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "details": "Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3816,10 +3831,10 @@ "latestQueuedRulesetOf(uint256)": { "notice": "Gets the latest ruleset queued for a project, its approval status, and its metadata." }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Creates a project." }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`." }, "migrate(uint256,address)": { @@ -3831,7 +3846,7 @@ "pendingReservedTokenBalanceOf(uint256)": { "notice": "A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet)." }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "notice": "Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook." }, "receiveMigrationFrom(address,uint256)": { @@ -3873,7 +3888,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBController.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBDeadline3Days.json b/deployments/nana-core-testnet/base_sepolia/JBDeadline3Days.json index 3e89c1f6..9b10071b 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBDeadline3Days.json +++ b/deployments/nana-core-testnet/base_sepolia/JBDeadline3Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline3Days", - "address": "0xD77B219eFe7180929364E57404e23fEE5A59eacA", + "address": "0x07C3e488BD36fC6E6EE53082aFD94995Eac329f1", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "contractAddress": null, - "cumulativeGasUsed": "4324498", + "cumulativeGasUsed": "3804154", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000269", - "gasUsed": "2958039", - "hash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "gasPrice": "1000268", + "gasUsed": "2960466", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 6, + "index": 13, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdadf428aae963d665048154e6e5d2f7af5a4a4adf3d5f830e97aad59505196bc" + "0xbb10315a7fff8911da286048705204539079c72b176a8169c583b3062c1fc3c6" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 7, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 14, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 8, + "index": 15, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 9, + "index": 16, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 10, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 17, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 11, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 12, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 13, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 20, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 14, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 15, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 16, + "index": 23, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 17, + "index": 24, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 18, + "index": 25, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 19, + "index": 26, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 20, + "index": 27, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000080000000000002040200000000000000000000080000000000000000400000040020000000000000400000000000001040000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000101000000804000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200040300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000100000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000400008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline3Days.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBDeadline7Days.json b/deployments/nana-core-testnet/base_sepolia/JBDeadline7Days.json index 07d4abfb..4c95c6c1 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBDeadline7Days.json +++ b/deployments/nana-core-testnet/base_sepolia/JBDeadline7Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline7Days", - "address": "0xD8eF2e39846f9361f5483AD28812A40Ea8415AB7", + "address": "0xFb132FF268F2D72415A48FF031E4FFB45f352069", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "contractAddress": null, - "cumulativeGasUsed": "4324498", + "cumulativeGasUsed": "3804154", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000269", - "gasUsed": "2958039", - "hash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "gasPrice": "1000268", + "gasUsed": "2960466", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 6, + "index": 13, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdadf428aae963d665048154e6e5d2f7af5a4a4adf3d5f830e97aad59505196bc" + "0xbb10315a7fff8911da286048705204539079c72b176a8169c583b3062c1fc3c6" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 7, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 14, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 8, + "index": 15, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 9, + "index": 16, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 10, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 17, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 11, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 12, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 13, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 20, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 14, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 15, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 16, + "index": 23, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 17, + "index": 24, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 18, + "index": 25, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 19, + "index": 26, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 20, + "index": 27, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000080000000000002040200000000000000000000080000000000000000400000040020000000000000400000000000001040000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000101000000804000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200040300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000100000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000400008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline7Days.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBDirectory.json b/deployments/nana-core-testnet/base_sepolia/JBDirectory.json index 904e2b72..1577ec32 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBDirectory.json +++ b/deployments/nana-core-testnet/base_sepolia/JBDirectory.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBDirectory", - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", "abi": [ { "type": "constructor", @@ -523,431 +523,497 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x5735aca2dcfa1f5ba6bc33d17de5dacb6e78ef5a2de33ce447d9687daf722b21\",\"urls\":[\"bzz-raw://1682eb78c68f9859fe9d506ad835631dae6b4507d9b886f02ed1538f7b4ce178\",\"dweb:/ipfs/QmdaKHzMJQrsjpPwaqUpEU64LhLkDRTdZegPC1NhSnEEyt\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x1f2d2d41758d5ae02caf9585c8d2ee104a57ea4fa2c87f179206eafad1658b6e\",\"urls\":[\"bzz-raw://a4cd663300234d724fe2e4253b39967023005d40ddf3e1029c15ffb6c6f9a28a\",\"dweb:/ipfs/QmdYTcyE4hntr6bswgp6LEvAuZWuutuTF2orRyeuByJsQV\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b6040516331a9108f60e11b81526004810184905261030b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b6040516331a9108f60e11b81526004810184905261030b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1065,7 +1131,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBDirectory.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBERC20.json b/deployments/nana-core-testnet/base_sepolia/JBERC20.json index ff55ac33..5a4137c9 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBERC20.json +++ b/deployments/nana-core-testnet/base_sepolia/JBERC20.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBERC20", - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", "abi": [ { "type": "constructor", @@ -993,432 +993,498 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in EIP-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0xb8f69828d41b3594afd7a8c6393565901c205d8b5baf5bd2e42dbac637172979\",\"urls\":[\"bzz-raw://c790253821191ac46b2050d87df820d4209871f90c616381e2c2c00ff3eaac34\",\"dweb:/ipfs/QmcPETTyuZBzDRL39JNXj3SBMdx3Y9o4fPQLSZ27py5Jim\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xc858a86a35701004d89022a5e98819aac46ccbdc4072fc9dd43928a676b1a2ee\",\"urls\":[\"bzz-raw://18acebb483c512c0eaafcb437f09c839972c3f0d36f0201ea7baa2926b987dd2\",\"dweb:/ipfs/Qmd9bf2noaDSYDtf6FMSzKu7LPhuf91jsVNmcoCuTCuGic\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x2a650f6e593cfe5ff2e514a17ea7f593ee70cefa1888066bc983a6308acff4b1\",\"urls\":[\"bzz-raw://9a3477b9665a4b6d19f86bf2cfbfa8c08ba41193f15e68c0d75c0cab7e1fc753\",\"dweb:/ipfs/QmbcurrTatN1PBmkCWdrED8zhAqx5ah9Qp6uR8YwkKWA8V\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x9128a324d265044430e5fa4a6a2853e92d6a62a2a5a69c2fc623f5b7b8cf3f34\",\"urls\":[\"bzz-raw://1122c2c8c19d717e45a9c00ccedd9fcd3b61eab6a291469a3d6200671d3e6f25\",\"dweb:/ipfs/QmYEjVC6ttBK1YSECdJmH69LtD2mahbVW27JLv6TUdWKiU\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x62dc9346044aabf22d78541bd495aa6ca05a7f5100aed26196ba35d40b59fcb5\",\"urls\":[\"bzz-raw://5221df4501c74cd4493fee1a0f0788e02c4dc78c3c601e9f557f557c5a53ea92\",\"dweb:/ipfs/QmZpzyYY9dKLrgvYhXSHT93jwqb1UGvtGNMQk5dpECY5pa\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516122e7620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122e76000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f00000000000000000000000000000000000000000000000000000000000000006005611499565b60606105997f00000000000000000000000000000000000000000000000000000000000000006006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a16148015610c3b57507f0000000000000000000000000000000000000000000000000000000000014a3446145b15610c6557507f749ace7d8ab64360e7888ba958a798e0d198c50cd8cb063f2d96219cf8f1692990565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e000000000000000000000000000000000000000000000000076005611499565b60606105997f31000000000000000000000000000000000000000000000000000000000000016006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", + "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df616148015610c3b57507f0000000000000000000000000000000000000000000000000000000000014a3446145b15610c6557507f873c78fd899ac996e1c0496ec5086d223777cad1dbf6aa8430687d8bba43362e90565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e00000000000000000000000000000000000000000000000007600561150a565b60606105997f3100000000000000000000000000000000000000000000000000000000000001600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { "CLOCK_MODE()": { - "details": "Machine-readable description of the clock as specified in EIP-6372." + "details": "Machine-readable description of the clock as specified in ERC-6372." }, "DOMAIN_SEPARATOR()": { "details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." @@ -1511,7 +1577,7 @@ "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." }, "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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." @@ -1552,7 +1618,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBERC20.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBFeelessAddresses.json b/deployments/nana-core-testnet/base_sepolia/JBFeelessAddresses.json index 71cad67b..910894e9 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBFeelessAddresses.json +++ b/deployments/nana-core-testnet/base_sepolia/JBFeelessAddresses.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFeelessAddresses", - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", "abi": [ { "type": "constructor", @@ -171,190 +171,495 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "10229440", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10183960", - "gasUsed": "9446941", - "hash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "index": 21, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x2e9751380ac6c24b724c1d1479a0b023a6a1b5fae5a822af76b8d2e90e357769" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", "index": 6, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 7, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 9, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 10, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 7, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 8, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 13, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 10, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 12, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 13, + "index": 18, "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 19, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 20, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 21, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 22, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 26, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 27, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 28, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 29, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 30, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 31, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 32, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000f", - "index": 15, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 34, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 38, "topics": [ - "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800408000801000000000000081000000000000000400000040020000000000000410000020000001040000000000000000200000000008000000000001340080040000000000008000000004000000020000000000000000000800000000000000000000000010000000400000000000000000000100000000000040000020000000000100000000000000004000800000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000010000020000000000000060000000000000000048000004000000000200080002000080000000000088000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x52f18612ac3fbe5092a91081db84c3d772a23f3cb6d02f88125d933c37b4c0f1\",\"urls\":[\"bzz-raw://23fa878e32b15373540c8439dd177468ab440a76d1c8ad9b8f6bc4c921bd9a31\",\"dweb:/ipfs/QmUhAyPn34XbiauGudPJL3wGGgVKrf8pXjJhCCeDA62g2A\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x0f6589d2a354511df98bd801ef3097d670cbc92221860ef85dd072c9c22686e4\",\"urls\":[\"bzz-raw://e0f40aad14373fa3a17094d9922611e580a3cd1a6c332bed8b0ca7d1b53bbf84\",\"dweb:/ipfs/QmUQFWtUz3ESAXgCrCjjLbjvbd6kMcmUpdybUDGwTgZJtL\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -406,7 +711,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFeelessAddresses.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBFundAccessLimits.json b/deployments/nana-core-testnet/base_sepolia/JBFundAccessLimits.json index 1a46abc5..97c5560b 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBFundAccessLimits.json +++ b/deployments/nana-core-testnet/base_sepolia/JBFundAccessLimits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFundAccessLimits", - "address": "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", + "address": "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", "abi": [ { "type": "constructor", @@ -355,460 +355,506 @@ } ] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimit", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimitCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering", "inputs": [] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowance", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering", "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimit\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0x89a00272e5eede2b1794bce3cbfcb061084ef4e87a47d4fb6edd46b2904d6b15\",\"urls\":[\"bzz-raw://f9d28ea69ba7c60cb55ae1b456e3e528cbbfea1924995e1d6f2ec4ad9cf8d0c2\",\"dweb:/ipfs/QmTLESNyXCZqFfmLYeRS5bZ7ab1xSPeUf9StxVV7TDyP45\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0xcdfae708622dbaec27730fc94ef2319b65073038f0802b78621ce88e87332954\",\"urls\":[\"bzz-raw://a43925bc1b9cbde7dabf932e3f67aea2201ba623f6d5a77144e50db798bbf36c\",\"dweb:/ipfs/QmZBYNPZqaAjpJP93y5TinnUL8q9A7J4TJr4XEGKNFP1bU\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516110ed3803806110ed83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161105561009860003960008181609201528181610ab50152610b4401526110556000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -902,7 +948,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFundAccessLimits.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBMultiTerminal.json b/deployments/nana-core-testnet/base_sepolia/JBMultiTerminal.json index 06528759..eeaebeb7 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBMultiTerminal.json +++ b/deployments/nana-core-testnet/base_sepolia/JBMultiTerminal.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBMultiTerminal", - "address": "0x4DeF0AA5B9CA095d11705284221b2878731ab4EF", + "address": "0x1052d3669fb28E9e6738E399c40468e733eD3a8d", "abi": [ { "type": "constructor", @@ -32,6 +32,11 @@ "type": "address", "internalType": "contract IJBTerminalStore" }, + { + "name": "tokens", + "type": "address", + "internalType": "contract IJBTokens" + }, { "name": "permit2", "type": "address", @@ -162,6 +167,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "TOKENS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IJBTokens" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "accountingContextForTokenOf", @@ -312,6 +330,55 @@ "outputs": [], "stateMutability": "payable" }, + { + "type": "function", + "name": "cashOutTokensOf", + "inputs": [ + { + "name": "holder", + "type": "address", + "internalType": "address" + }, + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tokenToReclaim", + "type": "address", + "internalType": "address" + }, + { + "name": "minTokensReclaimed", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "currentSurplusOf", @@ -321,6 +388,28 @@ "type": "uint256", "internalType": "uint256" }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, { "name": "decimals", "type": "uint256", @@ -445,6 +534,29 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "executeTransferTo", + "inputs": [ + { + "name": "addr", + "type": "address", + "internalType": "address payable" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "heldFeesOf", @@ -458,11 +570,16 @@ "name": "token", "type": "address", "internalType": "address" + }, + { + "name": "count", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { - "name": "", + "name": "heldFees", "type": "tuple[]", "internalType": "struct JBFee[]", "components": [ @@ -596,58 +713,14 @@ "name": "token", "type": "address", "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "redeemTokensOf", - "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, - { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "tokenToReclaim", - "type": "address", - "internalType": "address" }, { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "minTokensReclaimed", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address payable" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "reclaimAmount", + "name": "count", "type": "uint256", "internalType": "uint256" } ], + "outputs": [], "stateMutability": "nonpayable" }, { @@ -818,6 +891,73 @@ ], "anonymous": false }, + { + "type": "event", + "name": "CashOutTokens", + "inputs": [ + { + "name": "rulesetId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rulesetCycleNumber", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "projectId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "holder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "cashOutCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "reclaimAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "caller", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "FeeReverted", @@ -906,22 +1046,22 @@ }, { "type": "event", - "name": "HookAfterRecordPay", + "name": "HookAfterRecordCashOut", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterPayRecordedContext", + "internalType": "struct JBAfterCashOutRecordedContext", "components": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, @@ -936,7 +1076,12 @@ "internalType": "uint256" }, { - "name": "amount", + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "reclaimedAmount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -990,19 +1135,14 @@ ] }, { - "name": "weight", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "projectTokenCount", + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address" + "internalType": "address payable" }, { "name": "hookMetadata", @@ -1010,7 +1150,7 @@ "internalType": "bytes" }, { - "name": "payerMetadata", + "name": "cashOutMetadata", "type": "bytes", "internalType": "bytes" } @@ -1022,6 +1162,12 @@ "indexed": false, "internalType": "uint256" }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, { "name": "caller", "type": "address", @@ -1033,22 +1179,22 @@ }, { "type": "event", - "name": "HookAfterRecordRedeem", + "name": "HookAfterRecordPay", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBRedeemHook" + "internalType": "contract IJBPayHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterRedeemRecordedContext", + "internalType": "struct JBAfterPayRecordedContext", "components": [ { - "name": "holder", + "name": "payer", "type": "address", "internalType": "address" }, @@ -1063,12 +1209,7 @@ "internalType": "uint256" }, { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "reclaimedAmount", + "name": "amount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -1122,14 +1263,19 @@ ] }, { - "name": "redemptionRate", + "name": "weight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newlyIssuedTokenCount", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address payable" + "internalType": "address" }, { "name": "hookMetadata", @@ -1137,7 +1283,7 @@ "internalType": "bytes" }, { - "name": "redeemerMetadata", + "name": "payerMetadata", "type": "bytes", "internalType": "bytes" } @@ -1149,12 +1295,6 @@ "indexed": false, "internalType": "uint256" }, - { - "name": "fee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, { "name": "caller", "type": "address", @@ -1242,7 +1382,7 @@ "internalType": "uint256" }, { - "name": "beneficiaryTokenCount", + "name": "newlyIssuedTokenCount", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1339,7 +1479,7 @@ }, { "type": "event", - "name": "ProcessFee", + "name": "PayoutTransferReverted", "inputs": [ { "name": "projectId", @@ -1347,29 +1487,29 @@ "indexed": true, "internalType": "uint256" }, + { + "name": "addr", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "token", "type": "address", - "indexed": true, + "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "wasHeld", - "type": "bool", "indexed": false, - "internalType": "bool" + "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", + "name": "reason", + "type": "bytes", "indexed": false, - "internalType": "address" + "internalType": "bytes" }, { "name": "caller", @@ -1382,31 +1522,31 @@ }, { "type": "event", - "name": "RedeemTokens", + "name": "ProcessFee", "inputs": [ { - "name": "rulesetId", + "name": "projectId", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "rulesetCycleNumber", - "type": "uint256", + "name": "token", + "type": "address", "indexed": true, - "internalType": "uint256" + "internalType": "address" }, { - "name": "projectId", + "name": "amount", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "holder", - "type": "address", + "name": "wasHeld", + "type": "bool", "indexed": false, - "internalType": "address" + "internalType": "bool" }, { "name": "beneficiary", @@ -1414,30 +1554,6 @@ "indexed": false, "internalType": "address" }, - { - "name": "redeemCount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "redemptionRate", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "reclaimAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, { "name": "caller", "type": "address", @@ -1743,31 +1859,25 @@ }, { "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] + "name": "FailedCall", + "inputs": [] }, { "type": "error", - "name": "AddressInsufficientBalance", + "name": "InsufficientBalance", "inputs": [ { - "name": "account", - "type": "address", - "internalType": "address" + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" } ] }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBMultiTerminal_AccountingContextAlreadySet", @@ -1992,196 +2102,131 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "contractAddress": null, - "cumulativeGasUsed": "10229440", + "cumulativeGasUsed": "6357445", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10183960", - "gasUsed": "9446941", - "hash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "index": 21, + "gasPrice": "1000270", + "gasUsed": "5652193", + "hash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "index": 10, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 5, + "index": 12, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x2e9751380ac6c24b724c1d1479a0b023a6a1b5fae5a822af76b8d2e90e357769" - ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 - }, - { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x", - "index": 6, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" - ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 - }, - { - "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x", - "index": 7, - "topics": [ - "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", - "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + "0xada0b50f459e01d0d6c3ca716cbff9d29a4f99d303f6475ca885bd402fc6fa5b" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 - }, - { - "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 8, - "topics": [ - "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 - }, - { - "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x", - "index": 9, - "topics": [ - "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", - "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" - ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 - }, - { - "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 10, - "topics": [ - "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 12, + "index": 14, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x", - "index": 13, + "index": 15, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x000000000000000000000000000000000000000000000000000000000000000f", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800408000801000000000000081000000000000000400000040020000000000000410000020000001040000000000000000200000000008000000000001340080040000000000008000000004000000020000000000000000000800000000000000000000000010000000400000000000000000000100000000000040000020000000000100000000000000004000800000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000010000020000000000000060000000000000000048000004000000000200080002000080000000000088000000", + "logsBloom": "0x00000000000010000000000000080000000008000000008000000000000000000081000000000000000400000040020000000000000400000020000001040002000000000000200000000008400000000000300080040000800000000000000000000000000000000000000000000000000000000000000000000410000000000000000000000200000100000000000000000020000000000000000000000000204000800000000000000000000000002200000000000000100000000024000000000002000000000000000000000000080000000000020000000000000040000000000000000048000004000000000200080000000080000000000088000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterRedeemRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"redeemerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordRedeem\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RedeemTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"redeemTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"heldFeesOf(uint256,address)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.\",\"params\":{\"beneficiary\":\"The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.\",\"holder\":\"The account whose tokens are being redeemed.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"currentSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"heldFeesOf(uint256,address)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"notice\":\"Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xb5cd2141ff573c44ad32b4f2e147d7f8aafa8bc60696b54d6772c387581a61e5\",\"urls\":[\"bzz-raw://9605bb87282a8a183b7d6fc62489ce664c859ffd1c653e2504b8b720d6be78c8\",\"dweb:/ipfs/QmSEegf1AVghYwz4rBkj56JPzBgezhywqqPffYio1sBtuf\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x7148d30d6f0e1258b82a2bc0dc20e431a34bdc17e91884fc2aeebedf15ddd284\",\"urls\":[\"bzz-raw://d1883aeb4c15d8374ea65915856e0f718f90b228daaaffa46593d0b03db0c1b4\",\"dweb:/ipfs/Qmb2wmUdXfk6kfD7R1kRir6jB6AbyBAZtfeBE9K49DLek5\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x1920b27db84df39c883579a6f0f06c75a6c60507cae6457ee4360e6da6d53e4b\",\"urls\":[\"bzz-raw://82402bd1ff38c76fc87d57e3b4fc4f6d3ba37d5905aaca11c4c1839c2f020b9f\",\"dweb:/ipfs/QmbWJ7wefdX864Hm6DwoYs8GXS59QYEo5Rzh397aSTR4x7\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x5ce477c270dfcbc570363f8a4d951ecbce7564f374080a56575d273a35b3aa2b\",\"urls\":[\"bzz-raw://57ca35b8f5e9f79b2abca6e4b6706c693d52f6be634996c3a51b9e0f3d4b0244\",\"dweb:/ipfs/QmcEbmRsMx5shJg4ffisJupyb9yULaLW5VZxQnmmUiYWty\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemTerminal.sol\":{\"keccak256\":\"0x9b6baf323be2bf52de9f925410abc4d06ff6292cb6a342274bd4ca6eb4fedde5\",\"urls\":[\"bzz-raw://ec59b6ebdeda8de72d68244da0ee0c43b504791480517f70a751157a7a249c37\",\"dweb:/ipfs/QmcFtyoLyYxoZMGmC75aAqoGznC8BLUKHhDiounHbHNosa\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedCall\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"CashOutTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordCashOut\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutTransferReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"cashOutTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeTransferTo\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"heldFees\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.\",\"params\":{\"beneficiary\":\"The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account whose tokens are being cashed out.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"accountingContexts\":\"The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.\",\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"executeTransferTo(address,address,uint256)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"addr\":\"The address to transfer funds to.\",\"amount\":\"The amount of tokens to transfer.\",\"token\":\"The token to transfer.\"}},\"heldFeesOf(uint256,address,uint256)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address,uint256)\":{\"params\":{\"count\":\"The number of fees to process.\",\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"TOKENS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"notice\":\"Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook.\"},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"executeTransferTo(address,address,uint256)\":{\"notice\":\"Transfer funds to an address.\"},\"heldFeesOf(uint256,address,uint256)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address,uint256)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xbc24f690394a292930a621d67c9d62e5888c68ed6f32cf9889d34a2742112d0e\",\"urls\":[\"bzz-raw://3c22283618b43aa33fb47bdd7031bb538c3e07aad70d7a36a954bb2ba55d4f6f\",\"dweb:/ipfs/QmeV23MDrmFdYYdLybvvpjK3bqbDyu8mAR3yZZQEiwuecc\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0xac8ed1afe397bb4c4060d947ec5765cf600cefb6d10829157153f0a4324807ea\",\"urls\":[\"bzz-raw://6be3361a27a1944853407d61f33813b21403a63e0d4113c7b7e84ce3b87f5d61\",\"dweb:/ipfs/QmdFTXKU1j4gdFL6nNx1LTTtbgoaRgdnwyVJ7UaQDp9Uo1\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x6a71d83541ad900500674f70678c3287f1be3e5432134d16df3c65d97bbaf9e1\",\"urls\":[\"bzz-raw://73fa45b855b288827b211ed50fefaba35da66586544e6188a206f07feed099de\",\"dweb:/ipfs/QmQzUqTXAA3PF2jdyVQ4Pinfegmvc947iL4ATCLU59XwGH\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x5d4bb096842b1e06e65fb4299d1a9162e82d397a67a9b742aeb445f8fbfd8829\",\"urls\":[\"bzz-raw://5d7648a498111cfc879f00cb073c5077b648530d55ca2298f9bcf7514bff5f4a\",\"dweb:/ipfs/QmUt9XWSbWia6m99Xbr3UDoKY79ptujw6YmhqbYTcfqau4\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x025153918d26744dc4c6ffcdf8b009fb294f3815a73740704f8686eb594d530f\",\"urls\":[\"bzz-raw://aea589b93c57b4b9e781dd76f37897c1dbddc0d4b289801571ba10f21c19b9f9\",\"dweb:/ipfs/Qma7bvMtB7SQHb6qUit2o9KP5H46ctimXUsZXnoYKJcWdK\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xf36a63951A49a9708f007F23B077751be80fFE11", + "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x270eC8711dCa04cf5f3FdF10141428065e07194F", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0x000000000022D473030F116dDEE9F6B43aC78BA3", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620062ad380380620062ad833981016040819052620000359162000176565b6001600160a01b0380871660805280821660a052604080516388bc2ef360e01b81529051918516916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af919062000221565b6001600160a01b0390811660c05287811660e052858116610120526040805163d4a1b4b160e01b815290519185169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000221565b6001600160a01b039081166101405293841661016052509082166101805216610100525062000248915050565b6001600160a01b03811681146200017357600080fd5b50565b600080600080600080600060e0888a0312156200019257600080fd5b87516200019f816200015d565b6020890151909750620001b2816200015d565b6040890151909650620001c5816200015d565b6060890151909550620001d8816200015d565b6080890151909450620001eb816200015d565b60a0890151909350620001fe816200015d565b60c089015190925062000211816200015d565b8091505092959891949750929550565b6000602082840312156200023457600080fd5b815162000241816200015d565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161018051615f3e6200036f6000396000818161035c015281816115a1015281816117bc015281816122450152818161269d0152818161281901528181612aba01528181612e9d0152818161348e01526144dc0152600081816101cd0152613f2f0152600081816105c1015261080f01526000818161023b01528181610757015281816113720152818161168801528181612b6c0152612c0001526000818161047e01528181611e48015261254801526000818161044a0152611ab701526000818161050501528181610f81015281816119fd01528181611f9a01526136a20152600081816103c8015281816104cf015261307c01526000818161061501526121600152615f3e6000f3fe6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", - "deployedBytecode": "0x6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1181565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb01081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb0109091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe111691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe119091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe116001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe16906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", + "bytecode": "0x6101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f81565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab881565b3480156104e257600080fd5b506102807f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87610280565b34801561056957600080fd5b506102807f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e9091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f1691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab89091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f9091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2516906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -2221,6 +2266,21 @@ "token": "The token being added to the balance." } }, + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "details": "Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.", + "params": { + "beneficiary": "The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account whose tokens are being cashed out.", + "metadata": "Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.", + "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.", + "projectId": "The ID of the project the project tokens belong to.", + "tokenToReclaim": "The token being reclaimed." + }, + "returns": { + "reclaimAmount": "The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals." + } + }, "constructor": { "params": { "feelessAddresses": "A contract that stores addresses that shouldn't incur fees when being paid towards or from.", @@ -2232,9 +2292,10 @@ "trustedForwarder": "A trusted forwarder of transactions to this contract." } }, - "currentSurplusOf(uint256,uint256,uint256)": { + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "details": "This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).", "params": { + "accountingContexts": "The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.", "currency": "The currency to express the returned value in terms of.", "decimals": "The number of decimals to include in the fixed point returned value.", "projectId": "The ID of the project to get the current total surplus of." @@ -2265,7 +2326,15 @@ "token": "The token the fee is being paid in." } }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "details": "Only accepts calls from this terminal itself.", + "params": { + "addr": "The address to transfer funds to.", + "amount": "The amount of tokens to transfer.", + "token": "The token to transfer." + } + }, + "heldFeesOf(uint256,address,uint256)": { "details": "Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.", "params": { "projectId": "The ID of the project that is holding fees.", @@ -2300,27 +2369,13 @@ "beneficiaryTokenCount": "The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals." } }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "params": { + "count": "The number of fees to process.", "projectId": "The ID of the project to process held fees for.", "token": "The token to process held fees for." } }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "details": "Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.", - "params": { - "beneficiary": "The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.", - "holder": "The account whose tokens are being redeemed.", - "metadata": "Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.", - "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.", - "projectId": "The ID of the project the project tokens belong to.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals.", - "tokenToReclaim": "The token being reclaimed." - }, - "returns": { - "reclaimAmount": "The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals." - } - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "details": "If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.", "params": { @@ -2354,7 +2409,7 @@ "currency": "The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.", "feeBeneficiary": "The address to send the tokens resulting from paying the fee.", "memo": "A memo to pass along to the emitted event.", - "minTokensPaidOut": "The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", + "minTokensPaidOut": "The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", "projectId": "The ID of the project to use the surplus allowance of.", "token": "The token being paid out from the surplus." }, @@ -2395,6 +2450,9 @@ "STORE()": { "notice": "The contract that stores and manages the terminal's data." }, + "TOKENS()": { + "notice": "The contract storing and managing project rulesets." + }, "accountingContextForTokenOf(uint256,address)": { "notice": "A project's accounting context for a token." }, @@ -2407,7 +2465,10 @@ "addToBalanceOf(uint256,address,uint256,bool,string,bytes)": { "notice": "Adds funds to a project's balance without minting tokens." }, - "currentSurplusOf(uint256,uint256,uint256)": { + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "notice": "Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook." + }, + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the total current surplus amount in this terminal for a project, in terms of a given currency." }, "executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)": { @@ -2416,7 +2477,10 @@ "executeProcessFee(uint256,address,uint256,address,address)": { "notice": "Process a specified amount of fees for a project." }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "notice": "Transfer funds to an address." + }, + "heldFeesOf(uint256,address,uint256)": { "notice": "Fees that are being held for a project." }, "migrateBalanceOf(uint256,address,address)": { @@ -2425,12 +2489,9 @@ "pay(uint256,address,uint256,address,uint256,string,bytes)": { "notice": "Pay a project with tokens." }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "notice": "Process any fees that are being held for the project." }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "notice": "Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook." - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "notice": "Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit." }, @@ -2443,7 +2504,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBMultiTerminal.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBPermissions.json b/deployments/nana-core-testnet/base_sepolia/JBPermissions.json index f7d02fd1..c30365f2 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBPermissions.json +++ b/deployments/nana-core-testnet/base_sepolia/JBPermissions.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPermissions", - "address": "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", + "address": "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", "abi": [ { "type": "function", @@ -229,427 +229,493 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -710,7 +776,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPermissions.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBPrices.json b/deployments/nana-core-testnet/base_sepolia/JBPrices.json index 085432f0..e6baa42e 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBPrices.json +++ b/deployments/nana-core-testnet/base_sepolia/JBPrices.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPrices", - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", "abi": [ { "type": "constructor", @@ -369,432 +369,498 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", + "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -865,7 +931,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPrices.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBProjects.json b/deployments/nana-core-testnet/base_sepolia/JBProjects.json index ff3f81af..2fb8492d 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBProjects.json +++ b/deployments/nana-core-testnet/base_sepolia/JBProjects.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBProjects", - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "abi": [ { "type": "constructor", @@ -630,430 +630,496 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0b38038062001b0b833981016040819052620000349162000729565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000807565b506001620000a0828262000807565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b5050620009a2565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008d3565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb83836200020f565b6200020a600084848462000279565b505050565b6001600160a01b0382166200023b57604051633250574960e11b815260006004820152602401620000ca565b60006200024a838383620003b0565b90506001600160a01b038116156200020a576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003aa57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002be903390889087908790600401620008fb565b6020604051808303816000875af1925050508015620002fc575060408051601f3d908101601f19168201909252620002f9918101906200096f565b60015b6200036a573d8080156200032d576040519150601f19603f3d011682016040523d82523d6000602084013e62000332565b606091505b5080516000036200036257604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a857604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e057620003e0818486620004af565b6001600160a01b038116156200042057620003ff600085818062000519565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000450576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004bc83838362000647565b6200020a576001600160a01b038316620004ed57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200052e57506001600160a01b03821615155b15620006175760006200054184620006d0565b90506001600160a01b038316158015906200056e5750826001600160a01b0316816001600160a01b031614155b8015620005a157506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005cc5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006155783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006c85750826001600160a01b0316846001600160a01b03161480620006a357506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006c857506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070b57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073d57600080fd5b620007488362000711565b9150620007586020840162000711565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078c57607f821691505b602082108103620007ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020a576000816000526020600020601f850160051c81016020861015620007de5750805b601f850160051c820191505b81811015620007ff57828155600101620007ea565b505050505050565b81516001600160401b0381111562000823576200082362000761565b6200083b8162000834845462000777565b84620007b3565b602080601f8311600181146200087357600084156200085a5750858301515b600019600386901b1c1916600185901b178555620007ff565b600085815260208120601f198616915b82811015620008a45788860151825594840194600190910190840162000883565b5085821015620008c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008f457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b828110156200094b5785810182015185820160a0015281016200092d565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200098257600080fd5b81516001600160e01b0319811681146200099b57600080fd5b9392505050565b61115980620009b26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1163,7 +1229,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBProjects.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBRulesets.json b/deployments/nana-core-testnet/base_sepolia/JBRulesets.json index 9621360a..89316747 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBRulesets.json +++ b/deployments/nana-core-testnet/base_sepolia/JBRulesets.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBRulesets", - "address": "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", + "address": "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", "abi": [ { "type": "constructor", @@ -85,7 +85,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -170,7 +170,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -189,6 +189,118 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "deriveCycleNumberFrom", + "inputs": [ + { + "name": "baseRulesetCycleNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveStartFrom", + "inputs": [ + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mustStartAtOrAfter", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveWeightFrom", + "inputs": [ + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeightCutPercent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetCacheId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "weight", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getRulesetOf", @@ -241,7 +353,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -307,7 +419,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -370,7 +482,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "internalType": "uint256" }, @@ -427,7 +539,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -493,7 +605,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -585,7 +697,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -618,24 +730,44 @@ "anonymous": false }, { - "type": "error", - "name": "JBControlled_ControllerUnauthorized", + "type": "event", + "name": "WeightCacheUpdated", "inputs": [ { - "name": "controller", + "name": "projectId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "weight", + "type": "uint112", + "indexed": false, + "internalType": "uint112" + }, + { + "name": "weightCutMultiple", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "caller", "type": "address", + "indexed": false, "internalType": "address" } - ] + ], + "anonymous": false }, { "type": "error", - "name": "JBRulesets_InvalidDecayPercent", + "name": "JBControlled_ControllerUnauthorized", "inputs": [ { - "name": "percent", - "type": "uint256", - "internalType": "uint256" + "name": "controller", + "type": "address", + "internalType": "address" } ] }, @@ -698,6 +830,17 @@ } ] }, + { + "type": "error", + "name": "JBRulesets_InvalidWeightCutPercent", + "inputs": [ + { + "name": "percent", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "PRBMath_MulDiv_Overflow", @@ -720,429 +863,495 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidDecayPercent\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"decayPercent\":\"A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0x9a0d949ea3b79bf5edd35366d0b6872a94ff1c91f5c4c6a5c08c4d0c8bf7afc1\",\"urls\":[\"bzz-raw://203825c2247b772e8108c88af2c759022e9f444d61343f322c076378c0c5c604\",\"dweb:/ipfs/QmQ8dYTGSv8HHPYi5x5gfkgBsjtJFmEKjRGYSCHPBKamcW\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x28a3c175cd6a2721aba5416218f64c8fc63ccea735e824f7eb1922ab3d241286\",\"urls\":[\"bzz-raw://6f9504290f6b44e3c68d10990af834f182a5ea49c4f5552579d68ded8890fc5b\",\"dweb:/ipfs/QmXKme97iEX6R8KYL4AUNBLRJLXdtrwt3ZvhV4Ds3AKKQ2\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeightCutPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutMultiple\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"WeightCacheUpdated\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveCycleNumberFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveStartFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetCacheId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"deriveWeightFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"details\":\"Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.\",\"params\":{\"baseRulesetCycleNumber\":\"The cycle number of the base ruleset.\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"start\":\"The start time of the ruleset to derive a cycle number for.\"},\"returns\":{\"_0\":\"The ruleset's cycle number.\"}},\"deriveStartFrom(uint256,uint256,uint256)\":{\"params\":{\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"mustStartAtOrAfter\":\"The earliest time the next ruleset can start. The ruleset cannot start before this timestamp.\"},\"returns\":{\"start\":\"The next start time.\"}},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRulesetCacheId\":\"The ID of the ruleset to base the calculation on (the previous ruleset).\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"baseRulesetWeight\":\"The weight of the base ruleset.\",\"baseRulesetWeightCutPercent\":\"The weight cut percent of the base ruleset.\",\"projectId\":\"The ID of the project to which the ruleset weights apply.\",\"start\":\"The start time of the ruleset to derive a weight for.\"},\"returns\":{\"weight\":\"The derived weight, as a fixed point number with 18 decimals.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\",\"weightCutPercent\":\"A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The cycle number of the next ruleset given the specified ruleset.\"},\"deriveStartFrom(uint256,uint256,uint256)\":{\"notice\":\"The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.\"},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"The accumulated weight change since the specified ruleset.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0xace1fce879c2cd07db1518adb9091344621a0ced6e7abda3fe5c9c0239ad584c\",\"urls\":[\"bzz-raw://c74587ed1cdc1b6877fc23c0bdc8daab48adb33540fef494c10b01d199e51cfb\",\"dweb:/ipfs/QmW7zApznimSpP4ESmp8igsvNUqFLDUfDmEJ9mNvR7a3JZ\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x523d7c561f4040820c411309d10ee117ad3bf9ae30353d9b5fbe827f15411aaf\",\"urls\":[\"bzz-raw://4d7f9979439244800e00879054fe7861820fc492ab5e668acab5af18cb60b7a5\",\"dweb:/ipfs/QmfQVhJ9xdMpY5RsnNAgWj5pqPkGwVx2uhVzM2BiVyPN9t\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051611dcc380380611dcc83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611d336100996000396000818161015901528181610fba01526110490152611d336000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1178,6 +1387,42 @@ "ruleset": "The project's current ruleset." } }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "details": "Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.", + "params": { + "baseRulesetCycleNumber": "The cycle number of the base ruleset.", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "start": "The start time of the ruleset to derive a cycle number for." + }, + "returns": { + "_0": "The ruleset's cycle number." + } + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "params": { + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "mustStartAtOrAfter": "The earliest time the next ruleset can start. The ruleset cannot start before this timestamp." + }, + "returns": { + "start": "The next start time." + } + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "params": { + "baseRulesetCacheId": "The ID of the ruleset to base the calculation on (the previous ruleset).", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "baseRulesetWeight": "The weight of the base ruleset.", + "baseRulesetWeightCutPercent": "The weight cut percent of the base ruleset.", + "projectId": "The ID of the project to which the ruleset weights apply.", + "start": "The start time of the ruleset to derive a weight for." + }, + "returns": { + "weight": "The derived weight, as a fixed point number with 18 decimals." + } + }, "getRulesetOf(uint256,uint256)": { "params": { "projectId": "The ID of the project to which the ruleset belongs.", @@ -1201,12 +1446,12 @@ "details": "Only a project's current controller can queue its rulesets.", "params": { "approvalHook": "A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.", - "decayPercent": "A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.", - "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).", + "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).", "metadata": "Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.", "mustStartAtOrAfter": "The earliest time the ruleset can start. The ruleset cannot start before this timestamp.", "projectId": "The ID of the project to queue the ruleset for.", - "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid." + "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.", + "weightCutPercent": "A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one." }, "returns": { "_0": "The struct of the new ruleset." @@ -1244,6 +1489,15 @@ "currentOf(uint256)": { "notice": "The ruleset that is currently active for the specified project." }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "notice": "The cycle number of the next ruleset given the specified ruleset." + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "notice": "The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle." + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "notice": "The accumulated weight change since the specified ruleset." + }, "getRulesetOf(uint256,uint256)": { "notice": "Get the ruleset struct for a given `rulesetId` and `projectId`." }, @@ -1265,7 +1519,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBRulesets.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBSplits.json b/deployments/nana-core-testnet/base_sepolia/JBSplits.json index 9213dc75..83d15e04 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBSplits.json +++ b/deployments/nana-core-testnet/base_sepolia/JBSplits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBSplits", - "address": "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", + "address": "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", "abi": [ { "type": "constructor", @@ -265,429 +265,495 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x4bfa3109359cdd172dafd214f6675e92f51efc7d725636f1fd1ab4b63a71b951\",\"urls\":[\"bzz-raw://3a612d0db4783d7b104216ba718f25040b09e828b9e4bd69d1de8b0e875451c3\",\"dweb:/ipfs/QmTZBkT3mz6ygzijJy7BbdjTPsAvxj96AWsn5GtVQgBPdx\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x623066f6c0ee716cd925a207c32ba3466245dddfaca317492f999af1afa1aeb1\",\"urls\":[\"bzz-raw://1925d4d721d66365d142cd39e21acf896e99dafbaebaa698690f9b6d56faaff6\",\"dweb:/ipfs/QmPaKw3UdLsNhYYJ3PY5KNPGVw375EAcyrjxiogYkvdcvs\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -736,7 +802,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBSplits.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBTerminalStore.json b/deployments/nana-core-testnet/base_sepolia/JBTerminalStore.json index a6d646df..400ab21b 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBTerminalStore.json +++ b/deployments/nana-core-testnet/base_sepolia/JBTerminalStore.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTerminalStore", - "address": "0xf36a63951A49a9708f007F23B077751be80fFE11", + "address": "0x270eC8711dCa04cf5f3FdF10141428065e07194F", "abi": [ { "type": "constructor", @@ -97,57 +97,25 @@ "type": "function", "name": "currentReclaimableSurplusOf", "inputs": [ - { - "name": "terminal", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "accountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "name": "decimals", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", + "name": "totalSupply", "type": "uint256", "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "surplus", "type": "uint256", "internalType": "uint256" - }, - { - "name": "useTotalSurplus", - "type": "bool", - "internalType": "bool" } ], "outputs": [ @@ -169,17 +137,44 @@ "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "totalSupply", + "name": "terminals", + "type": "address[]", + "internalType": "contract IJBTerminal[]" + }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "decimals", "type": "uint256", "internalType": "uint256" }, { - "name": "surplus", + "name": "currency", "type": "uint256", "internalType": "uint256" } @@ -303,17 +298,27 @@ }, { "type": "function", - "name": "recordPaymentFrom", + "name": "recordCashOutFor", "inputs": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, { - "name": "amount", + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "accountingContext", "type": "tuple", - "internalType": "struct JBTokenAmount", + "internalType": "struct JBAccountingContext", "components": [ { "name": "token", @@ -329,23 +334,30 @@ "name": "currency", "type": "uint32", "internalType": "uint32" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" } ] }, { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address" + "name": "balanceAccountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] }, { "name": "metadata", @@ -390,7 +402,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -407,19 +419,24 @@ ] }, { - "name": "tokenCount", + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "hookSpecifications", "type": "tuple[]", - "internalType": "struct JBPayHookSpecification[]", + "internalType": "struct JBCashOutHookSpecification[]", "components": [ { "name": "hook", "type": "address", - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "amount", @@ -438,17 +455,17 @@ }, { "type": "function", - "name": "recordPayoutFor", + "name": "recordPaymentFrom", "inputs": [ { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" + "name": "payer", + "type": "address", + "internalType": "address" }, { - "name": "accountingContext", + "name": "amount", "type": "tuple", - "internalType": "struct JBAccountingContext", + "internalType": "struct JBTokenAmount", "components": [ { "name": "token", @@ -464,18 +481,28 @@ "name": "currency", "type": "uint32", "internalType": "uint32" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" } ] }, { - "name": "amount", + "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", - "type": "uint256", - "internalType": "uint256" + "name": "beneficiary", + "type": "address", + "internalType": "address" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [ @@ -515,7 +542,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -532,32 +559,44 @@ ] }, { - "name": "amountPaidOut", + "name": "tokenCount", "type": "uint256", "internalType": "uint256" + }, + { + "name": "hookSpecifications", + "type": "tuple[]", + "internalType": "struct JBPayHookSpecification[]", + "components": [ + { + "name": "hook", + "type": "address", + "internalType": "contract IJBPayHook" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] } ], "stateMutability": "nonpayable" }, { "type": "function", - "name": "recordRedemptionFor", + "name": "recordPayoutFor", "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, { "name": "accountingContext", "type": "tuple", @@ -581,31 +620,14 @@ ] }, { - "name": "balanceAccountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" + "name": "currency", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ @@ -645,7 +667,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -662,36 +684,9 @@ ] }, { - "name": "reclaimAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "redemptionRate", + "name": "amountPaidOut", "type": "uint256", "internalType": "uint256" - }, - { - "name": "hookSpecifications", - "type": "tuple[]", - "internalType": "struct JBRedeemHookSpecification[]", - "components": [ - { - "name": "hook", - "type": "address", - "internalType": "contract IJBRedeemHook" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] } ], "stateMutability": "nonpayable" @@ -799,7 +794,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1018,192 +1013,497 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "10229440", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10183960", - "gasUsed": "9446941", - "hash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "index": 21, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x2e9751380ac6c24b724c1d1479a0b023a6a1b5fae5a822af76b8d2e90e357769" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", "index": 6, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 7, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 9, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 10, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 7, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 8, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 13, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 10, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 12, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 13, + "index": 18, "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 19, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 20, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 21, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 22, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 26, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 27, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 28, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 29, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 30, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 31, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 32, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, - "data": "0x000000000000000000000000000000000000000000000000000000000000000f", - "index": 15, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 34, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa9f0b0e9e85cf348e9da429efec04a3d98132d98ba04a64458cdda594fba2bd1", - "blockNumber": 15334193, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 38, "topics": [ - "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xd3509f7a1bf6d598d4eb672f1817c6b6f441f92b0ad58f0c4be04376df530ec7", - "transactionIndex": 21 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800408000801000000000000081000000000000000400000040020000000000000410000020000001040000000000000000200000000008000000000001340080040000000000008000000004000000020000000000000000000800000000000000000000000010000000400000000000000000000100000000000040000020000000000100000000000000004000800000000000000000000000002200000000000000100000000004000000000002000000000000000000000000000000010000020000000000000060000000000000000048000004000000000200080002000080000000000088000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplus\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordRedemptionFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRedeemHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be redeemed.\",\"terminal\":\"The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.\",\"tokensRedeemed\":\"The number of tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"useTotalSurplus\":\"Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project whose project tokens would be redeemed.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"tokensRedeemed\":\"The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the redemption.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"holder\":\"The account that is redeeming tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being redeemed from.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\"},\"returns\":{\"hookSpecifications\":\"A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"redemptionRate\":\"The redemption rate influencing the reclaim amount.\",\"ruleset\":\"The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a redemption from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0xfaeee38eee4a977328cb0b365c2cd8bc38021273432a56d1355f31daff2c6a78\",\"urls\":[\"bzz-raw://6d6653aea5db7257bcc8c58a2d50c4e5a428f1ca91ed9f76bb44ce53407ab97a\",\"dweb:/ipfs/Qmf3ft5qXwAVnhH9z9PuQDrZ1m4oi4hGMvvSQPX3jah4DP\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRedemptions.sol\":{\"keccak256\":\"0x19b1a05b1cffbe28768d463eee259e4762ef5d831f4d7234ecd6eea1d14b7730\",\"urls\":[\"bzz-raw://5e03c000ce933109b35a53f32a236ac93e4f915c275deecb19366322a4c14f68\",\"dweb:/ipfs/QmbCc4LaGa7mDWWwzjKcp7vEpzzau8ZTHGPX8LHBRFdxsY\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x55cc7047785810c4aa2c7c3bb964efb9f6acb90e0f51caea237c9e7167ceb8c9\",\"urls\":[\"bzz-raw://75ee887000d9ae2ad4d33385ae75e3deef712e5ef0fc80172d2a464b5b4403ea\",\"dweb:/ipfs/QmaUbGBstbg8NbHLTPpPxV8UhNtf2t7ercVH2TudpkBK69\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordCashOutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.\",\"cashOutCount\":\"The number of tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be cashed out.\",\"terminals\":\"The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"cashOutCount\":\"The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"projectId\":\"The ID of the project whose project tokens would be cashed out.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the cash out.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account that is cashing out tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being cashing out from.\"},\"returns\":{\"cashOutTaxRate\":\"The cash out tax rate influencing the reclaim amount.\",\"hookSpecifications\":\"A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"ruleset\":\"The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a cash out from a project.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0x0751eb635ac791c32260ced6fbb664e3e2d8a4110beac32f36a00279649a4de1\",\"urls\":[\"bzz-raw://ac86bdd5d8be251bdcc1b67e05ffee07af1d7e5db7c966d8bf9e2290c2f2bdf5\",\"dweb:/ipfs/QmSJoVHgoCgQyx2sNojS3qgEiXgyChDCZz1oALZWtXMU8G\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D" ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003b9638038062003b9683398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613a1b6200017b600039600081816103150152818161035901528181610ad801528181610bcc015281816111da015281816114de0152818161164001528181611ab9015261202601526000818161015701528181610c7801528181611e9d015281816123ca01526126e401526000818161023e015281816104b60152818161057701528181610f89015281816112d80152818161137c0152818161157d015281816118cc015261242c0152613a1b6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5316633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e531690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", + "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c16633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c1690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1214,26 +1514,25 @@ "rulesets": "A contract storing and managing project rulesets." } }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { "details": "The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.", "params": { - "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed", + "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.", + "cashOutCount": "The number of tokens that would be cashed out, as a fixed point number with 18 decimals.", "currency": "The currency that the resulting number will be in terms of.", "decimals": "The number of decimals to include in the resulting fixed point number.", - "projectId": "The ID of the project whose tokens would be redeemed.", - "terminal": "The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.", - "tokensRedeemed": "The number of tokens that would be redeemed, as a fixed point number with 18 decimals.", - "useTotalSurplus": "Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used." + "projectId": "The ID of the project whose tokens would be cashed out.", + "terminals": "The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered." }, "returns": { - "_0": "The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens." + "_0": "The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens." } }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { "params": { - "projectId": "The ID of the project whose project tokens would be redeemed.", + "cashOutCount": "The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.", + "projectId": "The ID of the project whose project tokens would be cashed out.", "surplus": "The total terminal token surplus amount, as a fixed point number.", - "tokensRedeemed": "The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.", "totalSupply": "The total project token supply, as a fixed point number with 18 decimals." }, "returns": { @@ -1270,6 +1569,23 @@ "token": "The token being added to the balance." } }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "details": "Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.", + "params": { + "accountingContext": "The accounting context of the token being reclaimed by the cash out.", + "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account that is cashing out tokens.", + "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", + "projectId": "The ID of the project being cashing out from." + }, + "returns": { + "cashOutTaxRate": "The cash out tax rate influencing the reclaim amount.", + "hookSpecifications": "A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", + "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", + "ruleset": "The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable." + } + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "details": "Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.", "params": { @@ -1297,23 +1613,6 @@ "ruleset": "The ruleset the payout was made during, as a `JBRuleset` struct." } }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "details": "Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.", - "params": { - "accountingContext": "The accounting context of the token being reclaimed by the redemption.", - "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", - "holder": "The account that is redeeming tokens.", - "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", - "projectId": "The ID of the project being redeemed from.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals." - }, - "returns": { - "hookSpecifications": "A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", - "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", - "redemptionRate": "The redemption rate influencing the reclaim amount.", - "ruleset": "The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable." - } - }, "recordTerminalMigration(uint256,address)": { "params": { "projectId": "The ID of the project being migrated.", @@ -1354,11 +1653,11 @@ "balanceOf(address,uint256,address)": { "notice": "A project's balance of a specific token within a terminal." }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus." + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { + "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus." }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." + "notice": "Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." }, "currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the current surplus amount in a terminal for a specified project." @@ -1369,15 +1668,15 @@ "recordAddedBalanceFor(uint256,address,uint256)": { "notice": "Records funds being added to a project's balance." }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "notice": "Records a cash out from a project." + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "notice": "Records a payment to a project." }, "recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)": { "notice": "Records a payout from a project." }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "notice": "Records a redemption from a project." - }, "recordTerminalMigration(uint256,address)": { "notice": "Records the migration of funds from this store." }, @@ -1393,7 +1692,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTerminalStore.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/JBTokens.json b/deployments/nana-core-testnet/base_sepolia/JBTokens.json index d38c85e6..32dbb71b 100644 --- a/deployments/nana-core-testnet/base_sepolia/JBTokens.json +++ b/deployments/nana-core-testnet/base_sepolia/JBTokens.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTokens", - "address": "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "address": "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "abi": [ { "type": "constructor", @@ -554,9 +554,25 @@ }, { "type": "error", - "name": "ERC1167FailedCreateClone", + "name": "FailedDeployment", "inputs": [] }, + { + "type": "error", + "name": "InsufficientBalance", + "inputs": [ + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "JBControlled_ControllerUnauthorized", @@ -675,430 +691,496 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "contractAddress": null, - "cumulativeGasUsed": "17020896", + "cumulativeGasUsed": "20989408", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "10276643", - "gasUsed": "16709525", - "hash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "index": 7, + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 5, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x8539ef718a4f72c2543764ca7627eeb52ef3c7777b0a4587ab524ffae90fe12e" + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 4, + "index": 6, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 7, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 6, + "index": 8, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 9, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 8, + "index": 10, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 9, + "index": 11, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 12, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 11, + "index": 13, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 12, + "index": 14, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 15, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 14, + "index": 16, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 17, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 16, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 18, + "index": 20, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 19, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 21, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, - "data": "0x", - "index": 23, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" - ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 24, + "index": 26, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "index": 27, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 26, + "index": 28, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 27, + "index": 29, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 28, + "index": 30, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 29, + "index": 31, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 30, + "index": 32, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x", - "index": 31, + "index": 33, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x8fd2a3ec3739113c32e2191c8b8af9cdfdeac4613dc8c272a0050c35675ef219", - "blockNumber": 15334181, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 32, + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x95ae55659fa29acd64239ae3f9e020a3cb8a743323400d5fb1a4febfdf49b7cb", - "transactionIndex": 7 + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040120000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200400000002000000000080140000000080040800020000000000000000000000020104000000000000000000000000000002200400000000000100000000004000000000002000000000040000001000100010000010010060000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC1167FailedCreateClone\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedDeployment\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x721dbE852b6b329212F5AEccA1253F291363867A" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161157d38038061157d83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516114a46100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f6201526114a46000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a81565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a9060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df681565b61010f6101dd3660046112ea565b610920565b61015d7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df69060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1229,7 +1311,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTokens.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/SphinxConstants.json b/deployments/nana-core-testnet/base_sepolia/SphinxConstants.json index 58377ad3..e4ccef6d 100644 --- a/deployments/nana-core-testnet/base_sepolia/SphinxConstants.json +++ b/deployments/nana-core-testnet/base_sepolia/SphinxConstants.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "SphinxConstants", - "address": "0x1e03fe41B3bDC81E113F763e83B63336c17c15b9", + "address": "0x1F7eB47e508F03BeDC5660a64D40ba94f53a0721", "abi": [ { "type": "function", @@ -167,224 +167,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "contractAddress": null, - "cumulativeGasUsed": "4324498", + "cumulativeGasUsed": "3804154", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000269", - "gasUsed": "2958039", - "hash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "gasPrice": "1000268", + "gasUsed": "2960466", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "index": 6, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 6, + "index": 13, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xdadf428aae963d665048154e6e5d2f7af5a4a4adf3d5f830e97aad59505196bc" + "0xbb10315a7fff8911da286048705204539079c72b176a8169c583b3062c1fc3c6" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 7, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 14, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 8, + "index": 15, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 9, + "index": 16, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 10, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 17, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 11, + "index": 18, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 12, + "index": 19, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 13, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 20, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 14, + "index": 21, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 15, + "index": 22, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 16, + "index": 23, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 17, + "index": 24, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 18, + "index": 25, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 19, + "index": 26, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9b159623eb57bca9313f3fe9bf9aadafa2855806bfdd2ca572f6860c80af869f", - "blockNumber": 15718206, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, "data": "0x", - "index": 20, + "index": 27, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xf878aae289b4bbc6294422c07106e7944f13dc80ca67b2f90b7e37f7178ffd01", + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", "transactionIndex": 6 } ], - "logsBloom": "0x00000000000010000000000000080000000000002040200000000000000000000080000000000000000400000040020000000000000400000000000001040000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000101000000804000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200040300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000100000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000400008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": {}, @@ -395,7 +395,7 @@ "methods": {}, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol", "chainId": "84532", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/base_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json b/deployments/nana-core-testnet/base_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json new file mode 100644 index 00000000..78f9a6d3 --- /dev/null +++ b/deployments/nana-core-testnet/base_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json @@ -0,0 +1,396 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0xd14b4a4fbc989c7be665c30708a1975cce2ee8f976cf59399d19a08770189264", + "blockNumber": 18960672, + "contractAddress": null, + "cumulativeGasUsed": "5146332", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000268", + "gasUsed": "179036", + "hash": "0xa020f7520deee0507903dfdd4cedf6a7f1ed6f85f5452c9ddcafc89bf342d1b5", + "index": 4, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xd14b4a4fbc989c7be665c30708a1975cce2ee8f976cf59399d19a08770189264", + "blockNumber": 18960672, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 4, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xc52d866819ca29f7443937ff767f5a68381ca66db02c06c78adbcae8acf0f7fe" + ], + "transactionHash": "0xa020f7520deee0507903dfdd4cedf6a7f1ed6f85f5452c9ddcafc89bf342d1b5", + "transactionIndex": 4 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd14b4a4fbc989c7be665c30708a1975cce2ee8f976cf59399d19a08770189264", + "blockNumber": 18960672, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 5, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "transactionHash": "0xa020f7520deee0507903dfdd4cedf6a7f1ed6f85f5452c9ddcafc89bf342d1b5", + "transactionIndex": 4 + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000800000000020002000000000400200000000000004000000000000000000000040100000000001000000000000000000003000010000000000001000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000001000000000010000008200000000000000000000000000040000000000000000000000000000020000000000000001000000000000000000000020000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 18960672, + "blockHash": "0xd14b4a4fbc989c7be665c30708a1975cce2ee8f976cf59399d19a08770189264", + "chainId": "84532", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003848f38f8350d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b5700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057eaea599b9e2705427042fc5fa041cbe9feed35207fade1383bf4fa34a67494bf3cf3192b90697d786eb5542df233b78ad61ca1d363efcbd2ea6689b495e18db766e001a3a98aa57ea4f5856f819498e732de201fda4d293600a09d1ea621af6cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e07860000000000000000000000000000000000000000000000000000000000000041cd4c557e23ad083f5aa69ad5ba8ab151c6270fb64b1f654055648ac09acea61a158877deed36d265d885ee57df764aefde0b352a4be84c937c4cc0e4060909321c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "191386", + "gasPrice": "1000268", + "hash": "0xa020f7520deee0507903dfdd4cedf6a7f1ed6f85f5452c9ddcafc89bf342d1b5", + "maxFeePerGas": "1000538", + "maxPriorityFeePerGas": "1000000", + "nonce": 108, + "signature": { + "networkV": null, + "r": "0x0fc66e88844aa2376f6673521e39fb439edd30e87edd10792889db5042eeaba3", + "s": "0x766b9896877a45f891c88f04b3bd7f1b4c696d75d4806ae64cfbfcd2cf9e6522", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "contractAddress": null, + "cumulativeGasUsed": "3804154", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000268", + "gasUsed": "2960466", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "index": 6, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 13, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xbb10315a7fff8911da286048705204539079c72b176a8169c583b3062c1fc3c6" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 14, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 15, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 16, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 17, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 18, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 19, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 20, + "topics": [ + "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000000eeee", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 21, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 22, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 23, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 24, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 25, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 26, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "blockNumber": 18960684, + "data": "0x", + "index": 27, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "transactionIndex": 6 + } + ], + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200040300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000100000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000400008000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 18960684, + "blockHash": "0x0d4798722fba09de9bfd051d1c37d51e17e909332622ecad48c83251531edf21", + "chainId": "84532", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003e04e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000027000000000000000000000000000000000000000000000000000000000000003060000000000000000000000000000000000000000000000000000000000000338000000000000000000000000000000000000000000000000000000000000038a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000025c00000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245cc000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000023e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004cec4172635d39771fc1620f1db685f2ec4420104b1d50cd294614331b4d41a9111d64f55a5fc3064b07aadd6d8e3f8a305a5a0bdc8da9d844041bd70df1272cf6e1fc8703e9253ae2ce254a653629c2c8cb62e6969c85a634b3f9ed47b6051b64ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b44a00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000006e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c634300081700330000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb10000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004d03013d50093d2fbda752dadbcb8bfb5fb0eb7e77484a3e24988ef6128278ba911d64f55a5fc3064b07aadd6d8e3f8a305a5a0bdc8da9d844041bd70df1272cf6e1fc8703e9253ae2ce254a653629c2c8cb62e6969c85a634b3f9ed47b6051b64ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001800000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002682d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084c6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f631230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052f6f5f4b0481cad556d5c3ef8c99d4f9d934f39072d9725451c54fb9eb98b98a389f1727f247bd34b768cc045e1c8f063d8a9021af78cb62083e294ab64db513174fc78dc4ae8946ab10459892183b6f62c6c99ab0bb225d97929f3fae1724004ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049c9300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058a79665b440c0b901198d2571760f361fc3710ba4b3660296b69ad51dc7f9901b83071b21be266ef2b03af7475b82d982d34b7d86fba3d461cdcd31c46593b1b90b471b9e005c8adfb750de6e0baffe22aabf9bcb625dc77ca406eb08a4c2356cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490db00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058f7988cf179b4310dfd9e69c76ba7a120a414d72be1d464366a19d7e594e503ab83071b21be266ef2b03af7475b82d982d34b7d86fba3d461cdcd31c46593b1b90b471b9e005c8adfb750de6e0baffe22aabf9bcb625dc77ca406eb08a4c2356cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e078600000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "3256324", + "gasPrice": "1000268", + "hash": "0x36fb9bef2e6bc87343895dab2be7f236913a6f8c9b515b3e2e0f14974b4fe66d", + "maxFeePerGas": "1000536", + "maxPriorityFeePerGas": "1000000", + "nonce": 109, + "signature": { + "networkV": null, + "r": "0x863c63593c9bc6f46eba6346f3277a8767a59ecc43b014925d259a07572d6d20", + "s": "0x6b9453d50a0f3660a7ca1003a1e72cdd9d1a6e7da3036ef956c3d7b66ef9fc29", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "5", + "chainId": "84532", + "actions": [ + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000", + "gas": "2383040", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c634300081700330000000000000000000000004adc67696ba383f43dd60a9e78f2c97fbbfc7cb10000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000", + "gas": "504906", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "value": "0", + "txData": "0xc6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "gas": "157741", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "gas": "302227", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "gas": "299227", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/base_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json b/deployments/nana-core-testnet/base_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json new file mode 100644 index 00000000..686e8693 --- /dev/null +++ b/deployments/nana-core-testnet/base_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json @@ -0,0 +1,881 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0xa090fcd4f0562dcba234b99669b8c79baf2bd662d48184ee17282cef8e8848d0", + "blockNumber": 18960522, + "contractAddress": null, + "cumulativeGasUsed": "621370", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000268", + "gasUsed": "180239", + "hash": "0x993db09910aa7520494a265eb9ad1700a1e37604e317b70ab6a1209f7d94b447", + "index": 12, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xa090fcd4f0562dcba234b99669b8c79baf2bd662d48184ee17282cef8e8848d0", + "blockNumber": 18960522, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 4, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x21695f46e2d8b373f4e9a4128d510aa04bee2983683700152a1063d8f19cb1ba" + ], + "transactionHash": "0x993db09910aa7520494a265eb9ad1700a1e37604e317b70ab6a1209f7d94b447", + "transactionIndex": 12 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xa090fcd4f0562dcba234b99669b8c79baf2bd662d48184ee17282cef8e8848d0", + "blockNumber": 18960522, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 5, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "transactionHash": "0x993db09910aa7520494a265eb9ad1700a1e37604e317b70ab6a1209f7d94b447", + "transactionIndex": 12 + } + ], + "logsBloom": "0x000000000000800000000000000000000000000000000000000000000000000000800000000000000000000000400200000000000004000000000000000000000040000000000000000000000000000000003000000000008000001000000000080000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000400000000200000000000000000000000000040000000000000000000000000000020000000000000001020000000200000000000020000000000000000000000000000000080000200000000000000000000000080000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 18960522, + "blockHash": "0xa090fcd4f0562dcba234b99669b8c79baf2bd662d48184ee17282cef8e8848d0", + "chainId": "84532", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003a48f38f835732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f66d8f36c887970fc43cb000c4cb7f6e8473b2266113b9608a29502cf5596e88552355eab0dd17fd9af2b8f00a4760c85212ba7870e7be03f83f81fc46f3e2afd276f538e9ae02000223bc714a3f963760f807e802e623c0e4598446b2b055825eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004191987533e4effa4a831fc32a15bf073d02ab57f87e144fb2a0817d9899b6b45527e1753c2152dcd598b74b901ffda9124a88d4232d0fce47c4d96f4d83d250731c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "192618", + "gasPrice": "1000268", + "hash": "0x993db09910aa7520494a265eb9ad1700a1e37604e317b70ab6a1209f7d94b447", + "maxFeePerGas": "1000536", + "maxPriorityFeePerGas": "1000000", + "nonce": 105, + "signature": { + "networkV": null, + "r": "0xb1763f219c05d0ee4aee52117e3aab6ced7561ca4acceeecb9d97b80498007d9", + "s": "0x0a91b2b475e27010739d421ffe61901c76164dcd1c9eef6fa021632cd2870e47", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "contractAddress": null, + "cumulativeGasUsed": "20989408", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000268", + "gasUsed": "20486705", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "index": 6, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 5, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xee0aedebec5ba6ee0af10fee293a8e2785ade3716f2705d419269c30792cfe6d" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 6, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 7, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 8, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 9, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 10, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 11, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 12, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 13, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 14, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 15, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 16, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 17, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 18, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 19, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 20, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 21, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 22, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 23, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 26, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 27, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 28, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 29, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 30, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 31, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 32, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 33, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 34, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 35, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 36, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 37, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "blockNumber": 18960528, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 39, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "transactionIndex": 6 + } + ], + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080001000000000000000000041000000048080000000000020000010000000000100000002000000000020000000000002000c000000000000000000000000000002200400000000000100000000024000000000002000000010000000000000000090000000000060004000000001060000010000000000040000004000000000200080000000080040000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 18960528, + "blockHash": "0xf484ce396313348d47139e8b69e8ef69c8551d5f864d826886e76b4b908daae1", + "chainId": "84532", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000018e44e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000002ba000000000000000000000000000000000000000000000000000000000000046e0000000000000000000000000000000000000000000000000000000000000576000000000000000000000000000000000000000000000000000000000000079a00000000000000000000000000000000000000000000000000000000000008a80000000000000000000000000000000000000000000000000000000000000b4a0000000000000000000000000000000000000000000000000000000000000cda0000000000000000000000000000000000000000000000000000000000000e08000000000000000000000000000000000000000000000000000000000000143a000000000000000000000000000000000000000000000000000000000000146a00000000000000000000000000000000000000000000000000000000000014de000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b506a00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000939df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000060d837ed200fdecf9aaae37077ff403ff028d4ee6e2835be2c91c0c2d24e4791ca897b2d3cb24ef99fbe850a4fb163d8ea9da6c4b40878f1847d4f90f33a3414014c12b8cfb327126393f9541a576e49e4560d8444869b5cad1d745db556126f73d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001c600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015f64800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001b69df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061204f68aeea73a2b4292095a26ca4305d45d0a6ea87800123a4ab8979c050a8ea897b2d3cb24ef99fbe850a4fb163d8ea9da6c4b40878f1847d4f90f33a3414014c12b8cfb327126393f9541a576e49e4560d8444869b5cad1d745db556126f73d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000019800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018556400000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001894df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000006dd193bed071b23951391b0a6202c01e1cbd2424409f2a2f7feb6868287f06ef53663175f18515c4df526a43e09e727b4c3e03b437e11ae7c4c4133bf90c58206032650801bc1dba7ed9bba60aff80bd764eebc848dcc89a62c95d4ee6c9b5d85e10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000ec00000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ed68500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000dcddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d7b41a03d9053b14ecb235996c60462648815d71d02e3b0e09fd99c239bdddf4737758cd757a1229adee3da658acad594d0fd8b765084225c74af463c24afe84032650801bc1dba7ed9bba60aff80bd764eebc848dcc89a62c95d4ee6c9b5d85e10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000021600000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000020800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd96b00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001f85df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006bf0d71bf96f2efc2e963bd2c7e6a045575916a3888c31fb2acd2269cae6fb2f1359539cb23b3733ff8afc4493845ef3ba67563344d166b6893a2b9065b2d1e99896e63884df4bf0fb192763bef921fec6f024f75982b2fb0ade1089255d3d11de10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000014a340000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000f200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e67f100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000e3cdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000063f87b544af6f88b3f07e0738ffa92752dc1e869d1cd86a2c06bfddff4c0bb29a159727dc1abd081021a6de19233b247713bc36dfb8dd5df1747b3eece1b3935ac08322e3624c4d7c2f1b50baeefd8acfdd027fa7c166a3ce5461301c9a6beb679f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cd2000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002766df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061f4e23f70813d4865842ac994e0bc9398e5da015ba561d8cf8c0b1b20e0b142e0ad999f3197af2899a0817e40a64090da201eeea279e2e593c4f89b95acaed805326a8ee9b67dec89745c7c89ad112ddf98d69b3b763f0ed043052e001983a543d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000018200000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000017400000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168f6000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001648df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006868021b245360c4202224c33abc82e0879c1a6963418d1ea75862764d54f7b95aeac2bacbcf46f965339cef36464873a1e9a237f30b6b27a3440aa522f89d3da115cc7a7e90793e69e3a00be657bdab493ab5558a06f9be948cdf0ed5b7d7edc9dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000014a3400000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000011200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011285d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000103ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7500000000000000000000000000000000000000000000000000000000000000000000069f3ae4923a9d58be73d0ce4daace8977d63db00395123a3c0c3479ad41a386de3cc61778ea176473400313160eb29f80b0083a1c22aa217cca2f8acec3d8839d2662686d2f38f0f4addc8fdd4af28744f85de7517008938b7e1b6c2824865e7c5590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000062400000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000061600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b747300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006079df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87000000000000000000000000000000000000000000000000000000000000000000000000000006c49fb8a1a0af4fe07b79c2be549dbd0ba6e188b72c08b0995058ce714036606b0f3393ebc32a383457e27afd2a6bcc3e3346e2575efdb5ebad32d7ed365beb9d896e63884df4bf0fb192763bef921fec6f024f75982b2fb0ade1089255d3d11de10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000251be00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000044a1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062f48a35a1c716e47cdf5a8a93ca7e745e35af1178a7fc140acffbda692a6699556377b6e9727dd88bc851e00025dffbdfc4fa4a11bc42f31d06077b8aa392ac191a0a3b42d164ade9a65d04a857b4aa5f7d39e453c18846ffba6e942de3262049f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006123900000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000490df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066116efbf4935bfdd3d40fe1c4272f5d1a16507d8df068b453e5039d9ce9826a0dfad4df836116f9d3d3bd9b10c3a859c911cbed3a52e74fe2f367e9f09512619faede6f80e1abd301c798f069a3d47d9faf3638cbbd4f1a11832ccf8f4c18ad13ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000003e600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b23b700000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000003d6ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000673ca263f111e398174f112e62b0e9f0cfcda1d9dcbb62c5aa1d178b797fbc7c376db58b4ae3b0bc97b704b93c5117dc32a06911177cb8a6503eeb3a1fb3935c2dd14bfb844506ca5b09733b6d26a61e48a6bb5d2c5c5f417c88a9bfc1c609fe7cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "22121160", + "gasPrice": "1000268", + "hash": "0x223f7384bd323f67965db3691c513216536526b3308400e143e59d847b46ce45", + "maxFeePerGas": "1000536", + "maxPriorityFeePerGas": "1000000", + "nonce": 106, + "signature": { + "networkV": null, + "r": "0xcf9d7865651b7b1d7662ffc1dd58d9c7001741247627af5c81701adb24bd8afb", + "s": "0x0fbab4332be751452141781fb1851ec444cf3cc2ff148b49ccbc579270cc15f3", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "contractAddress": null, + "cumulativeGasUsed": "6357445", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000270", + "gasUsed": "5652193", + "hash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "index": 10, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 12, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xada0b50f459e01d0d6c3ca716cbff9d29a4f99d303f6475ca885bd402fc6fa5b" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x", + "index": 13, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x000000000000000000000000000000000000000000000000000000000000000e", + "index": 14, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x", + "index": 15, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x", + "index": 16, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x000000000000000000000000000000000000000000000000000000000000000f", + "index": 17, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "blockNumber": 18960534, + "data": "0x", + "index": 18, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "transactionIndex": 10 + } + ], + "logsBloom": "0x00000000000010000000000000080000000008000000008000000000000000000081000000000000000400000040020000000000000400000020000001040002000000000000200000000008400000000000300080040000800000000000000000000000000000000000000000000000000000000000000000000410000000000000000000000200000100000000000000000020000000000000000000000000204000800000000000000000000000002200000000000000100000000024000000000002000000000000000000000000080000000000020000000000000040000000000000000048000004000000000200080000000080000000000088000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 18960534, + "blockHash": "0x99a75e6964091ff3fa8b5f0c2e5652852bd7e4c2f578c14139ec93332cdccaaf", + "chainId": "84532", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000068c4e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000064400000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000063600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c220d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006265df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000642e807c62f98c3bf4af0f15d0e3a92655d7df6cb95ef2a5617a93a0bc5d80d6a159727dc1abd081021a6de19233b247713bc36dfb8dd5df1747b3eece1b3935ac08322e3624c4d7c2f1b50baeefd8acfdd027fa7c166a3ce5461301c9a6beb679f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000014a34000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000266ce00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000626abc946744a59cda7a0165ad0b15e064af767d17655dbde353f5ba94ca5473973176f0a26ff18ed5fb792c5ba9ea1e636925b4b014497fd7377c767b3eee3a25326a8ee9b67dec89745c7c89ad112ddf98d69b3b763f0ed043052e001983a543d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "7019619", + "gasPrice": "1000270", + "hash": "0xf6c687526e27ba6d7fdfd30d2caa639047eea84ef1388a2af415fb06d8816903", + "maxFeePerGas": "1000540", + "maxPriorityFeePerGas": "1000000", + "nonce": 107, + "signature": { + "networkV": null, + "r": "0x1f2285226b1189189adffaa2ce9349f69ff21be53c7f606457ad3f39130c5647", + "s": "0x021b74bcaaeabf60db23af513af0e2ff1f1e4aaa238afac71319678dadf8449c", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "4", + "chainId": "84532", + "actions": [ + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "gas": "741482", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1439304", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1594724", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "972421", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "2087275", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "944113", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "gas": "2411808", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6", + "gas": "1478496", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "1124445", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "5993587", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "value": "0", + "txData": "0xa1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001", + "gas": "151998", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "397881", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d", + "gas": "3875767", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "6038029", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "value": "0", + "txData": "0x42842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb0000000000000000000000000000000000000000000000000000000000000001", + "gas": "157390", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBChainlinkV3PriceFeed.json b/deployments/nana-core-testnet/optimism_sepolia/JBChainlinkV3PriceFeed.json index bfab213d..a0a58ff4 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBChainlinkV3PriceFeed.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBChainlinkV3PriceFeed.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBChainlinkV3PriceFeed", - "address": "0x102d93b7860f1927c40B0B1C12264fec5318B0D1", + "address": "0xb340efaB9AC83C42882F78ef6Fc6f177A7f63123", "abi": [ { "type": "constructor", @@ -103,227 +103,227 @@ ] } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "contractAddress": null, - "cumulativeGasUsed": "4468312", + "cumulativeGasUsed": "6726122", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000265", - "gasUsed": "2961731", - "hash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "index": 7, + "gasPrice": "1000253", + "gasUsed": "2960558", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "index": 11, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 25, + "index": 36, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x10d7ee38a620a52d22623b28b49f30d53d048baf1701f7dd08e7a659193defe0" + "0x025f394b97e4ee3bd046a29f484624a6efe444fe621423f1c1254a1a08a9fd97" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 26, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 37, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 27, + "index": 38, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 28, + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 29, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 40, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 30, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 31, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 32, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 43, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 33, + "index": 44, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 34, + "index": 45, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 35, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 36, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 37, + "index": 48, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 38, + "index": 49, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 39, + "index": 50, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 } ], - "logsBloom": "0x00000000000010000000000000082000000000000040200000000000000000000080000000000000000400000040020000000000000400000000000001040800000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000008010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000042020000000000000400000000000001040000000000000000220000000000020000200000300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000000000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000020010200000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0x61Ec26aA57019C486B10502285c5A3D4A4750AD7", "3600" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad781565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad76001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad76001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad781565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad76001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad76001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -359,7 +359,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBChainlinkV3PriceFeed.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBController.json b/deployments/nana-core-testnet/optimism_sepolia/JBController.json index 0a195f05..dd845998 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBController.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBController.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBController", - "address": "0x219A5cE6d1c512D5b050ad2E3d380b8746BE0Cb8", + "address": "0x74fc0e2cB3Eb5A2742f8B9F0D6F1263dD3664b5D", "abi": [ { "type": "constructor", @@ -249,7 +249,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -276,7 +276,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -330,11 +330,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -346,7 +341,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -356,7 +351,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -480,7 +475,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -507,7 +502,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -561,11 +556,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -577,7 +567,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -587,7 +577,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -730,7 +720,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -757,7 +747,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -811,11 +801,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -827,7 +812,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -837,7 +822,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -922,7 +907,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -949,7 +934,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1003,11 +988,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1019,7 +999,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1029,7 +1009,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1088,7 +1068,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1108,7 +1088,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1162,11 +1142,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1178,7 +1153,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1188,7 +1163,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1385,7 +1360,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1405,7 +1380,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1459,11 +1434,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1475,7 +1445,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1485,7 +1455,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1758,7 +1728,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1778,7 +1748,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1832,11 +1802,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1848,7 +1813,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1858,7 +1823,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2295,7 +2260,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -2322,7 +2287,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -2376,11 +2341,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -2392,7 +2352,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -2402,7 +2362,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2893,33 +2853,6 @@ ], "anonymous": false }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AddressInsufficientBalance", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBController_AddingPriceFeedNotAllowed", @@ -2932,7 +2865,7 @@ }, { "type": "error", - "name": "JBController_InvalidRedemptionRate", + "name": "JBController_InvalidCashOutTaxRate", "inputs": [ { "name": "rate", @@ -2988,6 +2921,22 @@ } ] }, + { + "type": "error", + "name": "JBController_OnlyFromTargetTerminal", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "targetTerminal", + "type": "address", + "internalType": "address" + } + ] + }, { "type": "error", "name": "JBController_RulesetSetTokenNotAllowed", @@ -3072,210 +3021,503 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "11372130", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000253", - "gasUsed": "10570470", - "hash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "index": 2, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 5, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x3969d2d8cd14cc16afecc8db314b1fce952f01aa35f06ead11831fef6682b4c7" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 19, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 20, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 21, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 22, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 23, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 26, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 27, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 28, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 29, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 30, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 31, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 32, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 33, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 34, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 35, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 37, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 38, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 7, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 43, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 9, + "index": 44, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 10, + "index": 45, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 12, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 13, + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 15, + "index": 50, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 51, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 17, + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800000000801000000000000080000000000000000400000040920000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000008000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000040000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidRedemptionRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0xd1f668827821ddb22398c30b8f258656f872299eacccc2ee13de91cad1e790a0\",\"urls\":[\"bzz-raw://3b80629f0ba8cab2e936e53a45db851cdf3616b73578ab381777e75dabfaf9cb\",\"dweb:/ipfs/QmZQ888nqPY9XRg2HgefVwYAaT4jeGUBWcbhjL6SiBqtvi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidCashOutTaxRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetTerminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyFromTargetTerminal\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0x3d6b6d7c8e116065e8b66939d7013341404741e79b15201e4291fd9478302e13\",\"urls\":[\"bzz-raw://8b03a02c3310559f927934465790c5dd04905def3973176a23dfe8398279da65\",\"dweb:/ipfs/QmeeZpdEjwCzPSJrJNwjMrZq9kGv5o5HL4o7eLTXAivLfL\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620060a7380380620060a7833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615d7d6200032a6000396000818161027a0152818161095701528181610bc40152818161102601528181611582015281816116e901528181611b9401528181611fa10152818161223e01528181613036015281816130b80152818161322401528181613377015281816133fe01526135bf0152600081816102e001528181611e5201528181612aa00152612f390152600081816105900152818161072701528181610da6015281816110e50152818161175a015281816126bf0152818161297f0152612c9f015260008181610328015281816107c901528181610c7d01528181610d1201528181610f460152818161123d0152818161135a015281816119e301528181611ccf01528181611dc001528181611ea701526121810152600081816102b901526108b201526000818161062a0152612b2701526000818161048f015281816109c501528181610a0701528181610e5401528181611408015281816118670152818161287401528181612bfd01526132de0152600081816103ee0152818161046601526138600152600081816105f001526125ef0152615d7d6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6106203660046145c5565b612002565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b61029c7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61035d6106203660046145c5565b612002565b61029c7f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f881565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e53169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c1690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f43169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc849091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f8169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe6001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a871614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", + "bytecode": "0x6101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b61029c7f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc81565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f9091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e1690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab256001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -3383,7 +3625,7 @@ "ruleset": "The struct for the project's latest queued ruleset." } }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3396,7 +3638,7 @@ "projectId": "The project's ID." } }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3428,7 +3670,7 @@ "beneficiaryTokenCount": "The number of tokens minted for the `beneficiary`." } }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "details": "Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3589,10 +3831,10 @@ "latestQueuedRulesetOf(uint256)": { "notice": "Gets the latest ruleset queued for a project, its approval status, and its metadata." }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Creates a project." }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`." }, "migrate(uint256,address)": { @@ -3604,7 +3846,7 @@ "pendingReservedTokenBalanceOf(uint256)": { "notice": "A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet)." }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "notice": "Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook." }, "receiveMigrationFrom(address,uint256)": { @@ -3646,7 +3888,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBController.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBDeadline3Days.json b/deployments/nana-core-testnet/optimism_sepolia/JBDeadline3Days.json index 09c509f0..96c13ccd 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBDeadline3Days.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBDeadline3Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline3Days", - "address": "0xD77B219eFe7180929364E57404e23fEE5A59eacA", + "address": "0x07C3e488BD36fC6E6EE53082aFD94995Eac329f1", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "contractAddress": null, - "cumulativeGasUsed": "4468312", + "cumulativeGasUsed": "6726122", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000265", - "gasUsed": "2961731", - "hash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "index": 7, + "gasPrice": "1000253", + "gasUsed": "2960558", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "index": 11, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 25, + "index": 36, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x10d7ee38a620a52d22623b28b49f30d53d048baf1701f7dd08e7a659193defe0" + "0x025f394b97e4ee3bd046a29f484624a6efe444fe621423f1c1254a1a08a9fd97" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 26, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 37, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 27, + "index": 38, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 28, + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 29, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 40, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 30, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 31, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 32, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 43, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 33, + "index": 44, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 34, + "index": 45, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 35, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 36, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 37, + "index": 48, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 38, + "index": 49, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 39, + "index": 50, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 } ], - "logsBloom": "0x00000000000010000000000000082000000000000040200000000000000000000080000000000000000400000040020000000000000400000000000001040800000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000008010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000042020000000000000400000000000001040000000000000000220000000000020000200000300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000000000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000020010200000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline3Days.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBDeadline7Days.json b/deployments/nana-core-testnet/optimism_sepolia/JBDeadline7Days.json index 80670cc8..1796b49c 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBDeadline7Days.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBDeadline7Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline7Days", - "address": "0xD8eF2e39846f9361f5483AD28812A40Ea8415AB7", + "address": "0xFb132FF268F2D72415A48FF031E4FFB45f352069", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "contractAddress": null, - "cumulativeGasUsed": "4468312", + "cumulativeGasUsed": "6726122", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000265", - "gasUsed": "2961731", - "hash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "index": 7, + "gasPrice": "1000253", + "gasUsed": "2960558", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "index": 11, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 25, + "index": 36, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x10d7ee38a620a52d22623b28b49f30d53d048baf1701f7dd08e7a659193defe0" + "0x025f394b97e4ee3bd046a29f484624a6efe444fe621423f1c1254a1a08a9fd97" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 26, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 37, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 27, + "index": 38, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 28, + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 29, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 40, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 30, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 31, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 32, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 43, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 33, + "index": 44, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 34, + "index": 45, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 35, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 36, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 37, + "index": 48, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 38, + "index": 49, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 39, + "index": 50, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 } ], - "logsBloom": "0x00000000000010000000000000082000000000000040200000000000000000000080000000000000000400000040020000000000000400000000000001040800000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000008010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000042020000000000000400000000000001040000000000000000220000000000020000200000300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000000000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000020010200000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline7Days.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBDirectory.json b/deployments/nana-core-testnet/optimism_sepolia/JBDirectory.json index b2a02a27..76b2003c 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBDirectory.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBDirectory.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBDirectory", - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", "abi": [ { "type": "constructor", @@ -523,339 +523,497 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x5735aca2dcfa1f5ba6bc33d17de5dacb6e78ef5a2de33ce447d9687daf722b21\",\"urls\":[\"bzz-raw://1682eb78c68f9859fe9d506ad835631dae6b4507d9b886f02ed1538f7b4ce178\",\"dweb:/ipfs/QmdaKHzMJQrsjpPwaqUpEU64LhLkDRTdZegPC1NhSnEEyt\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x1f2d2d41758d5ae02caf9585c8d2ee104a57ea4fa2c87f179206eafad1658b6e\",\"urls\":[\"bzz-raw://a4cd663300234d724fe2e4253b39967023005d40ddf3e1029c15ffb6c6f9a28a\",\"dweb:/ipfs/QmdYTcyE4hntr6bswgp6LEvAuZWuutuTF2orRyeuByJsQV\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b6040516331a9108f60e11b81526004810184905261030b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b6040516331a9108f60e11b81526004810184905261030b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -973,7 +1131,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBDirectory.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBERC20.json b/deployments/nana-core-testnet/optimism_sepolia/JBERC20.json index 5fb26d77..984a32f5 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBERC20.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBERC20.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBERC20", - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", "abi": [ { "type": "constructor", @@ -993,340 +993,498 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in EIP-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0xb8f69828d41b3594afd7a8c6393565901c205d8b5baf5bd2e42dbac637172979\",\"urls\":[\"bzz-raw://c790253821191ac46b2050d87df820d4209871f90c616381e2c2c00ff3eaac34\",\"dweb:/ipfs/QmcPETTyuZBzDRL39JNXj3SBMdx3Y9o4fPQLSZ27py5Jim\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xc858a86a35701004d89022a5e98819aac46ccbdc4072fc9dd43928a676b1a2ee\",\"urls\":[\"bzz-raw://18acebb483c512c0eaafcb437f09c839972c3f0d36f0201ea7baa2926b987dd2\",\"dweb:/ipfs/Qmd9bf2noaDSYDtf6FMSzKu7LPhuf91jsVNmcoCuTCuGic\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x2a650f6e593cfe5ff2e514a17ea7f593ee70cefa1888066bc983a6308acff4b1\",\"urls\":[\"bzz-raw://9a3477b9665a4b6d19f86bf2cfbfa8c08ba41193f15e68c0d75c0cab7e1fc753\",\"dweb:/ipfs/QmbcurrTatN1PBmkCWdrED8zhAqx5ah9Qp6uR8YwkKWA8V\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x9128a324d265044430e5fa4a6a2853e92d6a62a2a5a69c2fc623f5b7b8cf3f34\",\"urls\":[\"bzz-raw://1122c2c8c19d717e45a9c00ccedd9fcd3b61eab6a291469a3d6200671d3e6f25\",\"dweb:/ipfs/QmYEjVC6ttBK1YSECdJmH69LtD2mahbVW27JLv6TUdWKiU\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x62dc9346044aabf22d78541bd495aa6ca05a7f5100aed26196ba35d40b59fcb5\",\"urls\":[\"bzz-raw://5221df4501c74cd4493fee1a0f0788e02c4dc78c3c601e9f557f557c5a53ea92\",\"dweb:/ipfs/QmZpzyYY9dKLrgvYhXSHT93jwqb1UGvtGNMQk5dpECY5pa\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516122e7620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122e76000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f00000000000000000000000000000000000000000000000000000000000000006005611499565b60606105997f00000000000000000000000000000000000000000000000000000000000000006006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a16148015610c3b57507f0000000000000000000000000000000000000000000000000000000000aa37dc46145b15610c6557507f6e3444ab139fb4698d261cbbc5d423162d597235dd889a266d456ff1663b495790565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e000000000000000000000000000000000000000000000000076005611499565b60606105997f31000000000000000000000000000000000000000000000000000000000000016006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", + "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df616148015610c3b57507f0000000000000000000000000000000000000000000000000000000000aa37dc46145b15610c6557507f48fdd55d7227d479c790466acfdd789744039187d1baa7b0ac1843dff71651f090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e00000000000000000000000000000000000000000000000007600561150a565b60606105997f3100000000000000000000000000000000000000000000000000000000000001600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { "CLOCK_MODE()": { - "details": "Machine-readable description of the clock as specified in EIP-6372." + "details": "Machine-readable description of the clock as specified in ERC-6372." }, "DOMAIN_SEPARATOR()": { "details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." @@ -1419,7 +1577,7 @@ "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." }, "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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." @@ -1460,7 +1618,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBERC20.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBFeelessAddresses.json b/deployments/nana-core-testnet/optimism_sepolia/JBFeelessAddresses.json index 2e9046ee..b2c152ad 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBFeelessAddresses.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBFeelessAddresses.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFeelessAddresses", - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", "abi": [ { "type": "constructor", @@ -171,202 +171,495 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "11372130", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000253", - "gasUsed": "10570470", - "hash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "index": 2, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 5, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x3969d2d8cd14cc16afecc8db314b1fce952f01aa35f06ead11831fef6682b4c7" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 20, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 21, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 22, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 23, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 26, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 27, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 28, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 29, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 30, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 31, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 32, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 33, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 34, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 35, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 37, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 38, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 7, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 43, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 9, + "index": 44, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 10, + "index": 45, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 12, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 13, + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 15, + "index": 50, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 51, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 17, + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800000000801000000000000080000000000000000400000040920000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000008000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000040000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x52f18612ac3fbe5092a91081db84c3d772a23f3cb6d02f88125d933c37b4c0f1\",\"urls\":[\"bzz-raw://23fa878e32b15373540c8439dd177468ab440a76d1c8ad9b8f6bc4c921bd9a31\",\"dweb:/ipfs/QmUhAyPn34XbiauGudPJL3wGGgVKrf8pXjJhCCeDA62g2A\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x0f6589d2a354511df98bd801ef3097d670cbc92221860ef85dd072c9c22686e4\",\"urls\":[\"bzz-raw://e0f40aad14373fa3a17094d9922611e580a3cd1a6c332bed8b0ca7d1b53bbf84\",\"dweb:/ipfs/QmUQFWtUz3ESAXgCrCjjLbjvbd6kMcmUpdybUDGwTgZJtL\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -418,7 +711,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFeelessAddresses.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBFundAccessLimits.json b/deployments/nana-core-testnet/optimism_sepolia/JBFundAccessLimits.json index 4ddcf09c..82e9cbb4 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBFundAccessLimits.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBFundAccessLimits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFundAccessLimits", - "address": "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", + "address": "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", "abi": [ { "type": "constructor", @@ -355,368 +355,506 @@ } ] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimit", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimitCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering", "inputs": [] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowance", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering", "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimit\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0x89a00272e5eede2b1794bce3cbfcb061084ef4e87a47d4fb6edd46b2904d6b15\",\"urls\":[\"bzz-raw://f9d28ea69ba7c60cb55ae1b456e3e528cbbfea1924995e1d6f2ec4ad9cf8d0c2\",\"dweb:/ipfs/QmTLESNyXCZqFfmLYeRS5bZ7ab1xSPeUf9StxVV7TDyP45\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0xcdfae708622dbaec27730fc94ef2319b65073038f0802b78621ce88e87332954\",\"urls\":[\"bzz-raw://a43925bc1b9cbde7dabf932e3f67aea2201ba623f6d5a77144e50db798bbf36c\",\"dweb:/ipfs/QmZBYNPZqaAjpJP93y5TinnUL8q9A7J4TJr4XEGKNFP1bU\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516110ed3803806110ed83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161105561009860003960008181609201528181610ab50152610b4401526110556000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -810,7 +948,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFundAccessLimits.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBMultiTerminal.json b/deployments/nana-core-testnet/optimism_sepolia/JBMultiTerminal.json index a3323de4..a4180981 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBMultiTerminal.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBMultiTerminal.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBMultiTerminal", - "address": "0x4DeF0AA5B9CA095d11705284221b2878731ab4EF", + "address": "0x1052d3669fb28E9e6738E399c40468e733eD3a8d", "abi": [ { "type": "constructor", @@ -32,6 +32,11 @@ "type": "address", "internalType": "contract IJBTerminalStore" }, + { + "name": "tokens", + "type": "address", + "internalType": "contract IJBTokens" + }, { "name": "permit2", "type": "address", @@ -162,6 +167,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "TOKENS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IJBTokens" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "accountingContextForTokenOf", @@ -312,6 +330,55 @@ "outputs": [], "stateMutability": "payable" }, + { + "type": "function", + "name": "cashOutTokensOf", + "inputs": [ + { + "name": "holder", + "type": "address", + "internalType": "address" + }, + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tokenToReclaim", + "type": "address", + "internalType": "address" + }, + { + "name": "minTokensReclaimed", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "currentSurplusOf", @@ -321,6 +388,28 @@ "type": "uint256", "internalType": "uint256" }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, { "name": "decimals", "type": "uint256", @@ -445,6 +534,29 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "executeTransferTo", + "inputs": [ + { + "name": "addr", + "type": "address", + "internalType": "address payable" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "heldFeesOf", @@ -458,11 +570,16 @@ "name": "token", "type": "address", "internalType": "address" + }, + { + "name": "count", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { - "name": "", + "name": "heldFees", "type": "tuple[]", "internalType": "struct JBFee[]", "components": [ @@ -596,58 +713,14 @@ "name": "token", "type": "address", "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "redeemTokensOf", - "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, - { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "tokenToReclaim", - "type": "address", - "internalType": "address" - }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "minTokensReclaimed", - "type": "uint256", - "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", - "internalType": "address payable" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "reclaimAmount", + "name": "count", "type": "uint256", "internalType": "uint256" } ], + "outputs": [], "stateMutability": "nonpayable" }, { @@ -818,6 +891,73 @@ ], "anonymous": false }, + { + "type": "event", + "name": "CashOutTokens", + "inputs": [ + { + "name": "rulesetId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rulesetCycleNumber", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "projectId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "holder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "cashOutCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "reclaimAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "caller", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "FeeReverted", @@ -906,22 +1046,22 @@ }, { "type": "event", - "name": "HookAfterRecordPay", + "name": "HookAfterRecordCashOut", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterPayRecordedContext", + "internalType": "struct JBAfterCashOutRecordedContext", "components": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, @@ -936,7 +1076,12 @@ "internalType": "uint256" }, { - "name": "amount", + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "reclaimedAmount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -990,19 +1135,14 @@ ] }, { - "name": "weight", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "projectTokenCount", + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address" + "internalType": "address payable" }, { "name": "hookMetadata", @@ -1010,7 +1150,7 @@ "internalType": "bytes" }, { - "name": "payerMetadata", + "name": "cashOutMetadata", "type": "bytes", "internalType": "bytes" } @@ -1022,6 +1162,12 @@ "indexed": false, "internalType": "uint256" }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, { "name": "caller", "type": "address", @@ -1033,22 +1179,22 @@ }, { "type": "event", - "name": "HookAfterRecordRedeem", + "name": "HookAfterRecordPay", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBRedeemHook" + "internalType": "contract IJBPayHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterRedeemRecordedContext", + "internalType": "struct JBAfterPayRecordedContext", "components": [ { - "name": "holder", + "name": "payer", "type": "address", "internalType": "address" }, @@ -1063,12 +1209,7 @@ "internalType": "uint256" }, { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "reclaimedAmount", + "name": "amount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -1122,14 +1263,19 @@ ] }, { - "name": "redemptionRate", + "name": "weight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newlyIssuedTokenCount", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address payable" + "internalType": "address" }, { "name": "hookMetadata", @@ -1137,7 +1283,7 @@ "internalType": "bytes" }, { - "name": "redeemerMetadata", + "name": "payerMetadata", "type": "bytes", "internalType": "bytes" } @@ -1149,12 +1295,6 @@ "indexed": false, "internalType": "uint256" }, - { - "name": "fee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, { "name": "caller", "type": "address", @@ -1242,7 +1382,7 @@ "internalType": "uint256" }, { - "name": "beneficiaryTokenCount", + "name": "newlyIssuedTokenCount", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1339,7 +1479,7 @@ }, { "type": "event", - "name": "ProcessFee", + "name": "PayoutTransferReverted", "inputs": [ { "name": "projectId", @@ -1347,29 +1487,29 @@ "indexed": true, "internalType": "uint256" }, + { + "name": "addr", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "token", "type": "address", - "indexed": true, + "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "wasHeld", - "type": "bool", "indexed": false, - "internalType": "bool" + "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", + "name": "reason", + "type": "bytes", "indexed": false, - "internalType": "address" + "internalType": "bytes" }, { "name": "caller", @@ -1382,31 +1522,31 @@ }, { "type": "event", - "name": "RedeemTokens", + "name": "ProcessFee", "inputs": [ { - "name": "rulesetId", + "name": "projectId", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "rulesetCycleNumber", - "type": "uint256", + "name": "token", + "type": "address", "indexed": true, - "internalType": "uint256" + "internalType": "address" }, { - "name": "projectId", + "name": "amount", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "holder", - "type": "address", + "name": "wasHeld", + "type": "bool", "indexed": false, - "internalType": "address" + "internalType": "bool" }, { "name": "beneficiary", @@ -1414,30 +1554,6 @@ "indexed": false, "internalType": "address" }, - { - "name": "redeemCount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "redemptionRate", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "reclaimAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, { "name": "caller", "type": "address", @@ -1743,31 +1859,25 @@ }, { "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] + "name": "FailedCall", + "inputs": [] }, { "type": "error", - "name": "AddressInsufficientBalance", + "name": "InsufficientBalance", "inputs": [ { - "name": "account", - "type": "address", - "internalType": "address" + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" } ] }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBMultiTerminal_AccountingContextAlreadySet", @@ -1992,130 +2102,131 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "contractAddress": null, - "cumulativeGasUsed": "5774623", + "cumulativeGasUsed": "6711347", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000254", - "gasUsed": "5730748", - "hash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "index": 1, + "gasPrice": "1000255", + "gasUsed": "5652199", + "hash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "index": 12, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 0, + "index": 19, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xedb058af045487bb560ca2c3614ab44a260a012374edf1dbadd9478dec1459f6" + "0x2964512e4e941a37d6437c1f8f76c28a48d9a6ee74ccde52af98c082d7fe10f7" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x", - "index": 1, + "index": 20, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 2, + "index": 21, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x", - "index": 3, + "index": 22, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x", - "index": 4, + "index": 23, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x000000000000000000000000000000000000000000000000000000000000000f", - "index": 5, + "index": 24, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa803aaa1d457d6c1538d07ae513ec6acc50653c043594c9138d6948a1f6741f4", - "blockNumber": 17317078, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, "data": "0x", - "index": 6, + "index": 25, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0xe1706501c7606646795d36d3fb5d77d1ecfdc743d9cf024fddd5e5067da20ce1", - "transactionIndex": 1 + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000408000000000000000000081000000000000000400000040020000000000000410000020000001040000000000000000200000000008000000000000340080040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000040000020000000000000000000000000004000800000000000000000000000002200000000000000100000000004004000000002000000000000000000008000000000010000020000000000000240000000000000000048000004000000000200080000000080000000000088000000", + "logsBloom": "0x00000000000010000000000000080000000000000000008000000000000000000081000000000000000400000040020000000000000400000020000001040000000000000000200000000008400000000000300080040000800000000000000000000000000000000001000000000000000000000000000000000410000000000000000000000200000100000000000000000020000000000000000000000000004000800001000000000000000000002200000000000000100000000024000000000002000000000100000000000000080000000000020000000000000040000000000000000048000004000000000200080000000080000000000088000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterRedeemRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"redeemerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordRedeem\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RedeemTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"redeemTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"heldFeesOf(uint256,address)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.\",\"params\":{\"beneficiary\":\"The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.\",\"holder\":\"The account whose tokens are being redeemed.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"currentSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"heldFeesOf(uint256,address)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"notice\":\"Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xb5cd2141ff573c44ad32b4f2e147d7f8aafa8bc60696b54d6772c387581a61e5\",\"urls\":[\"bzz-raw://9605bb87282a8a183b7d6fc62489ce664c859ffd1c653e2504b8b720d6be78c8\",\"dweb:/ipfs/QmSEegf1AVghYwz4rBkj56JPzBgezhywqqPffYio1sBtuf\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x7148d30d6f0e1258b82a2bc0dc20e431a34bdc17e91884fc2aeebedf15ddd284\",\"urls\":[\"bzz-raw://d1883aeb4c15d8374ea65915856e0f718f90b228daaaffa46593d0b03db0c1b4\",\"dweb:/ipfs/Qmb2wmUdXfk6kfD7R1kRir6jB6AbyBAZtfeBE9K49DLek5\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x1920b27db84df39c883579a6f0f06c75a6c60507cae6457ee4360e6da6d53e4b\",\"urls\":[\"bzz-raw://82402bd1ff38c76fc87d57e3b4fc4f6d3ba37d5905aaca11c4c1839c2f020b9f\",\"dweb:/ipfs/QmbWJ7wefdX864Hm6DwoYs8GXS59QYEo5Rzh397aSTR4x7\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x5ce477c270dfcbc570363f8a4d951ecbce7564f374080a56575d273a35b3aa2b\",\"urls\":[\"bzz-raw://57ca35b8f5e9f79b2abca6e4b6706c693d52f6be634996c3a51b9e0f3d4b0244\",\"dweb:/ipfs/QmcEbmRsMx5shJg4ffisJupyb9yULaLW5VZxQnmmUiYWty\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemTerminal.sol\":{\"keccak256\":\"0x9b6baf323be2bf52de9f925410abc4d06ff6292cb6a342274bd4ca6eb4fedde5\",\"urls\":[\"bzz-raw://ec59b6ebdeda8de72d68244da0ee0c43b504791480517f70a751157a7a249c37\",\"dweb:/ipfs/QmcFtyoLyYxoZMGmC75aAqoGznC8BLUKHhDiounHbHNosa\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedCall\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"CashOutTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordCashOut\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutTransferReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"cashOutTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeTransferTo\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"heldFees\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.\",\"params\":{\"beneficiary\":\"The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account whose tokens are being cashed out.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"accountingContexts\":\"The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.\",\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"executeTransferTo(address,address,uint256)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"addr\":\"The address to transfer funds to.\",\"amount\":\"The amount of tokens to transfer.\",\"token\":\"The token to transfer.\"}},\"heldFeesOf(uint256,address,uint256)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address,uint256)\":{\"params\":{\"count\":\"The number of fees to process.\",\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"TOKENS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"notice\":\"Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook.\"},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"executeTransferTo(address,address,uint256)\":{\"notice\":\"Transfer funds to an address.\"},\"heldFeesOf(uint256,address,uint256)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address,uint256)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xbc24f690394a292930a621d67c9d62e5888c68ed6f32cf9889d34a2742112d0e\",\"urls\":[\"bzz-raw://3c22283618b43aa33fb47bdd7031bb538c3e07aad70d7a36a954bb2ba55d4f6f\",\"dweb:/ipfs/QmeV23MDrmFdYYdLybvvpjK3bqbDyu8mAR3yZZQEiwuecc\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0xac8ed1afe397bb4c4060d947ec5765cf600cefb6d10829157153f0a4324807ea\",\"urls\":[\"bzz-raw://6be3361a27a1944853407d61f33813b21403a63e0d4113c7b7e84ce3b87f5d61\",\"dweb:/ipfs/QmdFTXKU1j4gdFL6nNx1LTTtbgoaRgdnwyVJ7UaQDp9Uo1\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x6a71d83541ad900500674f70678c3287f1be3e5432134d16df3c65d97bbaf9e1\",\"urls\":[\"bzz-raw://73fa45b855b288827b211ed50fefaba35da66586544e6188a206f07feed099de\",\"dweb:/ipfs/QmQzUqTXAA3PF2jdyVQ4Pinfegmvc947iL4ATCLU59XwGH\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x5d4bb096842b1e06e65fb4299d1a9162e82d397a67a9b742aeb445f8fbfd8829\",\"urls\":[\"bzz-raw://5d7648a498111cfc879f00cb073c5077b648530d55ca2298f9bcf7514bff5f4a\",\"dweb:/ipfs/QmUt9XWSbWia6m99Xbr3UDoKY79ptujw6YmhqbYTcfqau4\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x025153918d26744dc4c6ffcdf8b009fb294f3815a73740704f8686eb594d530f\",\"urls\":[\"bzz-raw://aea589b93c57b4b9e781dd76f37897c1dbddc0d4b289801571ba10f21c19b9f9\",\"dweb:/ipfs/Qma7bvMtB7SQHb6qUit2o9KP5H46ctimXUsZXnoYKJcWdK\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xf36a63951A49a9708f007F23B077751be80fFE11", + "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x270eC8711dCa04cf5f3FdF10141428065e07194F", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0x000000000022D473030F116dDEE9F6B43aC78BA3", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620062ad380380620062ad833981016040819052620000359162000176565b6001600160a01b0380871660805280821660a052604080516388bc2ef360e01b81529051918516916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af919062000221565b6001600160a01b0390811660c05287811660e052858116610120526040805163d4a1b4b160e01b815290519185169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000221565b6001600160a01b039081166101405293841661016052509082166101805216610100525062000248915050565b6001600160a01b03811681146200017357600080fd5b50565b600080600080600080600060e0888a0312156200019257600080fd5b87516200019f816200015d565b6020890151909750620001b2816200015d565b6040890151909650620001c5816200015d565b6060890151909550620001d8816200015d565b6080890151909450620001eb816200015d565b60a0890151909350620001fe816200015d565b60c089015190925062000211816200015d565b8091505092959891949750929550565b6000602082840312156200023457600080fd5b815162000241816200015d565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161018051615f3e6200036f6000396000818161035c015281816115a1015281816117bc015281816122450152818161269d0152818161281901528181612aba01528181612e9d0152818161348e01526144dc0152600081816101cd0152613f2f0152600081816105c1015261080f01526000818161023b01528181610757015281816113720152818161168801528181612b6c0152612c0001526000818161047e01528181611e48015261254801526000818161044a0152611ab701526000818161050501528181610f81015281816119fd01528181611f9a01526136a20152600081816103c8015281816104cf015261307c01526000818161061501526121600152615f3e6000f3fe6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", - "deployedBytecode": "0x6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1181565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb01081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb0109091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe111691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe119091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe116001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe16906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", + "bytecode": "0x6101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f81565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab881565b3480156104e257600080fd5b506102807f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87610280565b34801561056957600080fd5b506102807f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e9091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f1691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab89091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f9091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2516906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -2155,6 +2266,21 @@ "token": "The token being added to the balance." } }, + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "details": "Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.", + "params": { + "beneficiary": "The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account whose tokens are being cashed out.", + "metadata": "Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.", + "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.", + "projectId": "The ID of the project the project tokens belong to.", + "tokenToReclaim": "The token being reclaimed." + }, + "returns": { + "reclaimAmount": "The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals." + } + }, "constructor": { "params": { "feelessAddresses": "A contract that stores addresses that shouldn't incur fees when being paid towards or from.", @@ -2166,9 +2292,10 @@ "trustedForwarder": "A trusted forwarder of transactions to this contract." } }, - "currentSurplusOf(uint256,uint256,uint256)": { + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "details": "This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).", "params": { + "accountingContexts": "The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.", "currency": "The currency to express the returned value in terms of.", "decimals": "The number of decimals to include in the fixed point returned value.", "projectId": "The ID of the project to get the current total surplus of." @@ -2199,7 +2326,15 @@ "token": "The token the fee is being paid in." } }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "details": "Only accepts calls from this terminal itself.", + "params": { + "addr": "The address to transfer funds to.", + "amount": "The amount of tokens to transfer.", + "token": "The token to transfer." + } + }, + "heldFeesOf(uint256,address,uint256)": { "details": "Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.", "params": { "projectId": "The ID of the project that is holding fees.", @@ -2234,27 +2369,13 @@ "beneficiaryTokenCount": "The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals." } }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "params": { + "count": "The number of fees to process.", "projectId": "The ID of the project to process held fees for.", "token": "The token to process held fees for." } }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "details": "Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.", - "params": { - "beneficiary": "The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.", - "holder": "The account whose tokens are being redeemed.", - "metadata": "Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.", - "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.", - "projectId": "The ID of the project the project tokens belong to.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals.", - "tokenToReclaim": "The token being reclaimed." - }, - "returns": { - "reclaimAmount": "The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals." - } - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "details": "If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.", "params": { @@ -2288,7 +2409,7 @@ "currency": "The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.", "feeBeneficiary": "The address to send the tokens resulting from paying the fee.", "memo": "A memo to pass along to the emitted event.", - "minTokensPaidOut": "The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", + "minTokensPaidOut": "The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", "projectId": "The ID of the project to use the surplus allowance of.", "token": "The token being paid out from the surplus." }, @@ -2329,6 +2450,9 @@ "STORE()": { "notice": "The contract that stores and manages the terminal's data." }, + "TOKENS()": { + "notice": "The contract storing and managing project rulesets." + }, "accountingContextForTokenOf(uint256,address)": { "notice": "A project's accounting context for a token." }, @@ -2341,7 +2465,10 @@ "addToBalanceOf(uint256,address,uint256,bool,string,bytes)": { "notice": "Adds funds to a project's balance without minting tokens." }, - "currentSurplusOf(uint256,uint256,uint256)": { + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "notice": "Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook." + }, + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the total current surplus amount in this terminal for a project, in terms of a given currency." }, "executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)": { @@ -2350,7 +2477,10 @@ "executeProcessFee(uint256,address,uint256,address,address)": { "notice": "Process a specified amount of fees for a project." }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "notice": "Transfer funds to an address." + }, + "heldFeesOf(uint256,address,uint256)": { "notice": "Fees that are being held for a project." }, "migrateBalanceOf(uint256,address,address)": { @@ -2359,12 +2489,9 @@ "pay(uint256,address,uint256,address,uint256,string,bytes)": { "notice": "Pay a project with tokens." }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "notice": "Process any fees that are being held for the project." }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "notice": "Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook." - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "notice": "Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit." }, @@ -2377,7 +2504,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBMultiTerminal.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBPermissions.json b/deployments/nana-core-testnet/optimism_sepolia/JBPermissions.json index d896231e..db6da689 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBPermissions.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBPermissions.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPermissions", - "address": "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", + "address": "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", "abi": [ { "type": "function", @@ -229,335 +229,493 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -618,7 +776,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPermissions.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBPrices.json b/deployments/nana-core-testnet/optimism_sepolia/JBPrices.json index 8ec77f66..f3ee3467 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBPrices.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBPrices.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPrices", - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", "abi": [ { "type": "constructor", @@ -369,340 +369,498 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", + "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -773,7 +931,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPrices.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBProjects.json b/deployments/nana-core-testnet/optimism_sepolia/JBProjects.json index cbc494b8..c4bb900a 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBProjects.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBProjects.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBProjects", - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "abi": [ { "type": "constructor", @@ -630,338 +630,496 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0b38038062001b0b833981016040819052620000349162000729565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000807565b506001620000a0828262000807565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b5050620009a2565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008d3565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb83836200020f565b6200020a600084848462000279565b505050565b6001600160a01b0382166200023b57604051633250574960e11b815260006004820152602401620000ca565b60006200024a838383620003b0565b90506001600160a01b038116156200020a576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003aa57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002be903390889087908790600401620008fb565b6020604051808303816000875af1925050508015620002fc575060408051601f3d908101601f19168201909252620002f9918101906200096f565b60015b6200036a573d8080156200032d576040519150601f19603f3d011682016040523d82523d6000602084013e62000332565b606091505b5080516000036200036257604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a857604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e057620003e0818486620004af565b6001600160a01b038116156200042057620003ff600085818062000519565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000450576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004bc83838362000647565b6200020a576001600160a01b038316620004ed57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200052e57506001600160a01b03821615155b15620006175760006200054184620006d0565b90506001600160a01b038316158015906200056e5750826001600160a01b0316816001600160a01b031614155b8015620005a157506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005cc5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006155783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006c85750826001600160a01b0316846001600160a01b03161480620006a357506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006c857506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070b57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073d57600080fd5b620007488362000711565b9150620007586020840162000711565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078c57607f821691505b602082108103620007ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020a576000816000526020600020601f850160051c81016020861015620007de5750805b601f850160051c820191505b81811015620007ff57828155600101620007ea565b505050505050565b81516001600160401b0381111562000823576200082362000761565b6200083b8162000834845462000777565b84620007b3565b602080601f8311600181146200087357600084156200085a5750858301515b600019600386901b1c1916600185901b178555620007ff565b600085815260208120601f198616915b82811015620008a45788860151825594840194600190910190840162000883565b5085821015620008c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008f457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b828110156200094b5785810182015185820160a0015281016200092d565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200098257600080fd5b81516001600160e01b0319811681146200099b57600080fd5b9392505050565b61115980620009b26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1071,7 +1229,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBProjects.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBRulesets.json b/deployments/nana-core-testnet/optimism_sepolia/JBRulesets.json index 12f38de9..78e60d07 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBRulesets.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBRulesets.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBRulesets", - "address": "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", + "address": "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", "abi": [ { "type": "constructor", @@ -85,7 +85,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -170,7 +170,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -189,6 +189,118 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "deriveCycleNumberFrom", + "inputs": [ + { + "name": "baseRulesetCycleNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveStartFrom", + "inputs": [ + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mustStartAtOrAfter", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveWeightFrom", + "inputs": [ + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeightCutPercent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetCacheId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "weight", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getRulesetOf", @@ -241,7 +353,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -307,7 +419,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -370,7 +482,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "internalType": "uint256" }, @@ -427,7 +539,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -493,7 +605,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -585,7 +697,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -618,24 +730,44 @@ "anonymous": false }, { - "type": "error", - "name": "JBControlled_ControllerUnauthorized", + "type": "event", + "name": "WeightCacheUpdated", "inputs": [ { - "name": "controller", + "name": "projectId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "weight", + "type": "uint112", + "indexed": false, + "internalType": "uint112" + }, + { + "name": "weightCutMultiple", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "caller", "type": "address", + "indexed": false, "internalType": "address" } - ] + ], + "anonymous": false }, { "type": "error", - "name": "JBRulesets_InvalidDecayPercent", + "name": "JBControlled_ControllerUnauthorized", "inputs": [ { - "name": "percent", - "type": "uint256", - "internalType": "uint256" + "name": "controller", + "type": "address", + "internalType": "address" } ] }, @@ -698,6 +830,17 @@ } ] }, + { + "type": "error", + "name": "JBRulesets_InvalidWeightCutPercent", + "inputs": [ + { + "name": "percent", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "PRBMath_MulDiv_Overflow", @@ -720,337 +863,495 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidDecayPercent\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"decayPercent\":\"A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0x9a0d949ea3b79bf5edd35366d0b6872a94ff1c91f5c4c6a5c08c4d0c8bf7afc1\",\"urls\":[\"bzz-raw://203825c2247b772e8108c88af2c759022e9f444d61343f322c076378c0c5c604\",\"dweb:/ipfs/QmQ8dYTGSv8HHPYi5x5gfkgBsjtJFmEKjRGYSCHPBKamcW\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x28a3c175cd6a2721aba5416218f64c8fc63ccea735e824f7eb1922ab3d241286\",\"urls\":[\"bzz-raw://6f9504290f6b44e3c68d10990af834f182a5ea49c4f5552579d68ded8890fc5b\",\"dweb:/ipfs/QmXKme97iEX6R8KYL4AUNBLRJLXdtrwt3ZvhV4Ds3AKKQ2\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeightCutPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutMultiple\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"WeightCacheUpdated\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveCycleNumberFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveStartFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetCacheId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"deriveWeightFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"details\":\"Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.\",\"params\":{\"baseRulesetCycleNumber\":\"The cycle number of the base ruleset.\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"start\":\"The start time of the ruleset to derive a cycle number for.\"},\"returns\":{\"_0\":\"The ruleset's cycle number.\"}},\"deriveStartFrom(uint256,uint256,uint256)\":{\"params\":{\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"mustStartAtOrAfter\":\"The earliest time the next ruleset can start. The ruleset cannot start before this timestamp.\"},\"returns\":{\"start\":\"The next start time.\"}},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRulesetCacheId\":\"The ID of the ruleset to base the calculation on (the previous ruleset).\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"baseRulesetWeight\":\"The weight of the base ruleset.\",\"baseRulesetWeightCutPercent\":\"The weight cut percent of the base ruleset.\",\"projectId\":\"The ID of the project to which the ruleset weights apply.\",\"start\":\"The start time of the ruleset to derive a weight for.\"},\"returns\":{\"weight\":\"The derived weight, as a fixed point number with 18 decimals.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\",\"weightCutPercent\":\"A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The cycle number of the next ruleset given the specified ruleset.\"},\"deriveStartFrom(uint256,uint256,uint256)\":{\"notice\":\"The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.\"},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"The accumulated weight change since the specified ruleset.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0xace1fce879c2cd07db1518adb9091344621a0ced6e7abda3fe5c9c0239ad584c\",\"urls\":[\"bzz-raw://c74587ed1cdc1b6877fc23c0bdc8daab48adb33540fef494c10b01d199e51cfb\",\"dweb:/ipfs/QmW7zApznimSpP4ESmp8igsvNUqFLDUfDmEJ9mNvR7a3JZ\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x523d7c561f4040820c411309d10ee117ad3bf9ae30353d9b5fbe827f15411aaf\",\"urls\":[\"bzz-raw://4d7f9979439244800e00879054fe7861820fc492ab5e668acab5af18cb60b7a5\",\"dweb:/ipfs/QmfQVhJ9xdMpY5RsnNAgWj5pqPkGwVx2uhVzM2BiVyPN9t\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051611dcc380380611dcc83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611d336100996000396000818161015901528181610fba01526110490152611d336000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1086,6 +1387,42 @@ "ruleset": "The project's current ruleset." } }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "details": "Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.", + "params": { + "baseRulesetCycleNumber": "The cycle number of the base ruleset.", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "start": "The start time of the ruleset to derive a cycle number for." + }, + "returns": { + "_0": "The ruleset's cycle number." + } + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "params": { + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "mustStartAtOrAfter": "The earliest time the next ruleset can start. The ruleset cannot start before this timestamp." + }, + "returns": { + "start": "The next start time." + } + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "params": { + "baseRulesetCacheId": "The ID of the ruleset to base the calculation on (the previous ruleset).", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "baseRulesetWeight": "The weight of the base ruleset.", + "baseRulesetWeightCutPercent": "The weight cut percent of the base ruleset.", + "projectId": "The ID of the project to which the ruleset weights apply.", + "start": "The start time of the ruleset to derive a weight for." + }, + "returns": { + "weight": "The derived weight, as a fixed point number with 18 decimals." + } + }, "getRulesetOf(uint256,uint256)": { "params": { "projectId": "The ID of the project to which the ruleset belongs.", @@ -1109,12 +1446,12 @@ "details": "Only a project's current controller can queue its rulesets.", "params": { "approvalHook": "A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.", - "decayPercent": "A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.", - "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).", + "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).", "metadata": "Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.", "mustStartAtOrAfter": "The earliest time the ruleset can start. The ruleset cannot start before this timestamp.", "projectId": "The ID of the project to queue the ruleset for.", - "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid." + "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.", + "weightCutPercent": "A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one." }, "returns": { "_0": "The struct of the new ruleset." @@ -1152,6 +1489,15 @@ "currentOf(uint256)": { "notice": "The ruleset that is currently active for the specified project." }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "notice": "The cycle number of the next ruleset given the specified ruleset." + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "notice": "The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle." + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "notice": "The accumulated weight change since the specified ruleset." + }, "getRulesetOf(uint256,uint256)": { "notice": "Get the ruleset struct for a given `rulesetId` and `projectId`." }, @@ -1173,7 +1519,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBRulesets.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBSplits.json b/deployments/nana-core-testnet/optimism_sepolia/JBSplits.json index 85f4ec28..5649d6ec 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBSplits.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBSplits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBSplits", - "address": "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", + "address": "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", "abi": [ { "type": "constructor", @@ -265,337 +265,495 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "10035451", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000252", - "gasUsed": "9849999", - "hash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "index": 4, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 3, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x7e919d28adfaaa056363b58348b1c1680d5dea2da39c4ec2f9f6a665234e7f03" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 4, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 5, + "index": 20, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 21, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 7, + "index": 22, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 23, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 9, + "index": 24, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 10, + "index": 25, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 26, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 12, + "index": 27, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 13, + "index": 28, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 29, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 15, + "index": 30, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 31, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 17, + "index": 32, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 18, + "index": 33, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 19, + "index": 34, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 20, + "index": 35, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 21, + "index": 37, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 22, + "index": 38, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 23, + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 24, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x008832ed2400f1f74b5a37cab42a5dd8352c02da25172ec45453e75dd494eadd", - "blockNumber": 17317061, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 25, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x446f2c2081654b6b41e495522cd062e8f7d6df318207ea123fec7e9a1cb8c97e", - "transactionIndex": 4 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000000000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020220400000002000000000000140000000000040000020000000080000000000000000104000000000000000000000000000402200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x4bfa3109359cdd172dafd214f6675e92f51efc7d725636f1fd1ab4b63a71b951\",\"urls\":[\"bzz-raw://3a612d0db4783d7b104216ba718f25040b09e828b9e4bd69d1de8b0e875451c3\",\"dweb:/ipfs/QmTZBkT3mz6ygzijJy7BbdjTPsAvxj96AWsn5GtVQgBPdx\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x623066f6c0ee716cd925a207c32ba3466245dddfaca317492f999af1afa1aeb1\",\"urls\":[\"bzz-raw://1925d4d721d66365d142cd39e21acf896e99dafbaebaa698690f9b6d56faaff6\",\"dweb:/ipfs/QmPaKw3UdLsNhYYJ3PY5KNPGVw375EAcyrjxiogYkvdcvs\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -644,7 +802,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBSplits.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBTerminalStore.json b/deployments/nana-core-testnet/optimism_sepolia/JBTerminalStore.json index dbd2055f..bfae95a1 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBTerminalStore.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBTerminalStore.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTerminalStore", - "address": "0xf36a63951A49a9708f007F23B077751be80fFE11", + "address": "0x270eC8711dCa04cf5f3FdF10141428065e07194F", "abi": [ { "type": "constructor", @@ -97,57 +97,25 @@ "type": "function", "name": "currentReclaimableSurplusOf", "inputs": [ - { - "name": "terminal", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "accountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "name": "decimals", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", + "name": "totalSupply", "type": "uint256", "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "surplus", "type": "uint256", "internalType": "uint256" - }, - { - "name": "useTotalSurplus", - "type": "bool", - "internalType": "bool" } ], "outputs": [ @@ -169,17 +137,44 @@ "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "totalSupply", + "name": "terminals", + "type": "address[]", + "internalType": "contract IJBTerminal[]" + }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "decimals", "type": "uint256", "internalType": "uint256" }, { - "name": "surplus", + "name": "currency", "type": "uint256", "internalType": "uint256" } @@ -303,17 +298,27 @@ }, { "type": "function", - "name": "recordPaymentFrom", + "name": "recordCashOutFor", "inputs": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, { - "name": "amount", + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "accountingContext", "type": "tuple", - "internalType": "struct JBTokenAmount", + "internalType": "struct JBAccountingContext", "components": [ { "name": "token", @@ -329,23 +334,30 @@ "name": "currency", "type": "uint32", "internalType": "uint32" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" } ] }, { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address" + "name": "balanceAccountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] }, { "name": "metadata", @@ -390,7 +402,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -407,19 +419,24 @@ ] }, { - "name": "tokenCount", + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "hookSpecifications", "type": "tuple[]", - "internalType": "struct JBPayHookSpecification[]", + "internalType": "struct JBCashOutHookSpecification[]", "components": [ { "name": "hook", "type": "address", - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "amount", @@ -438,17 +455,17 @@ }, { "type": "function", - "name": "recordPayoutFor", + "name": "recordPaymentFrom", "inputs": [ { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" + "name": "payer", + "type": "address", + "internalType": "address" }, { - "name": "accountingContext", + "name": "amount", "type": "tuple", - "internalType": "struct JBAccountingContext", + "internalType": "struct JBTokenAmount", "components": [ { "name": "token", @@ -464,18 +481,28 @@ "name": "currency", "type": "uint32", "internalType": "uint32" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" } ] }, { - "name": "amount", + "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", - "type": "uint256", - "internalType": "uint256" + "name": "beneficiary", + "type": "address", + "internalType": "address" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [ @@ -515,7 +542,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -532,32 +559,44 @@ ] }, { - "name": "amountPaidOut", + "name": "tokenCount", "type": "uint256", "internalType": "uint256" + }, + { + "name": "hookSpecifications", + "type": "tuple[]", + "internalType": "struct JBPayHookSpecification[]", + "components": [ + { + "name": "hook", + "type": "address", + "internalType": "contract IJBPayHook" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] } ], "stateMutability": "nonpayable" }, { "type": "function", - "name": "recordRedemptionFor", + "name": "recordPayoutFor", "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, { "name": "accountingContext", "type": "tuple", @@ -581,31 +620,14 @@ ] }, { - "name": "balanceAccountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" + "name": "currency", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ @@ -645,7 +667,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -662,36 +684,9 @@ ] }, { - "name": "reclaimAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "redemptionRate", + "name": "amountPaidOut", "type": "uint256", "internalType": "uint256" - }, - { - "name": "hookSpecifications", - "type": "tuple[]", - "internalType": "struct JBRedeemHookSpecification[]", - "components": [ - { - "name": "hook", - "type": "address", - "internalType": "contract IJBRedeemHook" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] } ], "stateMutability": "nonpayable" @@ -799,7 +794,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1018,204 +1013,497 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "11372130", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000253", - "gasUsed": "10570470", - "hash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "index": 2, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 5, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x3969d2d8cd14cc16afecc8db314b1fce952f01aa35f06ead11831fef6682b4c7" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 19, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 20, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 21, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 22, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 23, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 26, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 27, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 28, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 29, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 30, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 31, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 32, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 33, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 34, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 35, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 37, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 38, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 7, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 43, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 9, + "index": 44, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 10, + "index": 45, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 12, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 13, + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 15, + "index": 50, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 51, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 17, + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800000000801000000000000080000000000000000400000040920000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000008000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000040000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplus\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordRedemptionFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRedeemHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be redeemed.\",\"terminal\":\"The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.\",\"tokensRedeemed\":\"The number of tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"useTotalSurplus\":\"Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project whose project tokens would be redeemed.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"tokensRedeemed\":\"The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the redemption.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"holder\":\"The account that is redeeming tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being redeemed from.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\"},\"returns\":{\"hookSpecifications\":\"A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"redemptionRate\":\"The redemption rate influencing the reclaim amount.\",\"ruleset\":\"The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a redemption from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0xfaeee38eee4a977328cb0b365c2cd8bc38021273432a56d1355f31daff2c6a78\",\"urls\":[\"bzz-raw://6d6653aea5db7257bcc8c58a2d50c4e5a428f1ca91ed9f76bb44ce53407ab97a\",\"dweb:/ipfs/Qmf3ft5qXwAVnhH9z9PuQDrZ1m4oi4hGMvvSQPX3jah4DP\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRedemptions.sol\":{\"keccak256\":\"0x19b1a05b1cffbe28768d463eee259e4762ef5d831f4d7234ecd6eea1d14b7730\",\"urls\":[\"bzz-raw://5e03c000ce933109b35a53f32a236ac93e4f915c275deecb19366322a4c14f68\",\"dweb:/ipfs/QmbCc4LaGa7mDWWwzjKcp7vEpzzau8ZTHGPX8LHBRFdxsY\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x55cc7047785810c4aa2c7c3bb964efb9f6acb90e0f51caea237c9e7167ceb8c9\",\"urls\":[\"bzz-raw://75ee887000d9ae2ad4d33385ae75e3deef712e5ef0fc80172d2a464b5b4403ea\",\"dweb:/ipfs/QmaUbGBstbg8NbHLTPpPxV8UhNtf2t7ercVH2TudpkBK69\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordCashOutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.\",\"cashOutCount\":\"The number of tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be cashed out.\",\"terminals\":\"The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"cashOutCount\":\"The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"projectId\":\"The ID of the project whose project tokens would be cashed out.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the cash out.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account that is cashing out tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being cashing out from.\"},\"returns\":{\"cashOutTaxRate\":\"The cash out tax rate influencing the reclaim amount.\",\"hookSpecifications\":\"A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"ruleset\":\"The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a cash out from a project.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0x0751eb635ac791c32260ced6fbb664e3e2d8a4110beac32f36a00279649a4de1\",\"urls\":[\"bzz-raw://ac86bdd5d8be251bdcc1b67e05ffee07af1d7e5db7c966d8bf9e2290c2f2bdf5\",\"dweb:/ipfs/QmSJoVHgoCgQyx2sNojS3qgEiXgyChDCZz1oALZWtXMU8G\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D" ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003b9638038062003b9683398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613a1b6200017b600039600081816103150152818161035901528181610ad801528181610bcc015281816111da015281816114de0152818161164001528181611ab9015261202601526000818161015701528181610c7801528181611e9d015281816123ca01526126e401526000818161023e015281816104b60152818161057701528181610f89015281816112d80152818161137c0152818161157d015281816118cc015261242c0152613a1b6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5316633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e531690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", + "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c16633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c1690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1226,26 +1514,25 @@ "rulesets": "A contract storing and managing project rulesets." } }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { "details": "The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.", "params": { - "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed", + "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.", + "cashOutCount": "The number of tokens that would be cashed out, as a fixed point number with 18 decimals.", "currency": "The currency that the resulting number will be in terms of.", "decimals": "The number of decimals to include in the resulting fixed point number.", - "projectId": "The ID of the project whose tokens would be redeemed.", - "terminal": "The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.", - "tokensRedeemed": "The number of tokens that would be redeemed, as a fixed point number with 18 decimals.", - "useTotalSurplus": "Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used." + "projectId": "The ID of the project whose tokens would be cashed out.", + "terminals": "The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered." }, "returns": { - "_0": "The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens." + "_0": "The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens." } }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { "params": { - "projectId": "The ID of the project whose project tokens would be redeemed.", + "cashOutCount": "The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.", + "projectId": "The ID of the project whose project tokens would be cashed out.", "surplus": "The total terminal token surplus amount, as a fixed point number.", - "tokensRedeemed": "The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.", "totalSupply": "The total project token supply, as a fixed point number with 18 decimals." }, "returns": { @@ -1282,6 +1569,23 @@ "token": "The token being added to the balance." } }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "details": "Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.", + "params": { + "accountingContext": "The accounting context of the token being reclaimed by the cash out.", + "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account that is cashing out tokens.", + "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", + "projectId": "The ID of the project being cashing out from." + }, + "returns": { + "cashOutTaxRate": "The cash out tax rate influencing the reclaim amount.", + "hookSpecifications": "A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", + "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", + "ruleset": "The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable." + } + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "details": "Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.", "params": { @@ -1309,23 +1613,6 @@ "ruleset": "The ruleset the payout was made during, as a `JBRuleset` struct." } }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "details": "Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.", - "params": { - "accountingContext": "The accounting context of the token being reclaimed by the redemption.", - "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", - "holder": "The account that is redeeming tokens.", - "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", - "projectId": "The ID of the project being redeemed from.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals." - }, - "returns": { - "hookSpecifications": "A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", - "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", - "redemptionRate": "The redemption rate influencing the reclaim amount.", - "ruleset": "The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable." - } - }, "recordTerminalMigration(uint256,address)": { "params": { "projectId": "The ID of the project being migrated.", @@ -1366,11 +1653,11 @@ "balanceOf(address,uint256,address)": { "notice": "A project's balance of a specific token within a terminal." }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus." + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { + "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus." }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." + "notice": "Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." }, "currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the current surplus amount in a terminal for a specified project." @@ -1381,15 +1668,15 @@ "recordAddedBalanceFor(uint256,address,uint256)": { "notice": "Records funds being added to a project's balance." }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "notice": "Records a cash out from a project." + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "notice": "Records a payment to a project." }, "recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)": { "notice": "Records a payout from a project." }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "notice": "Records a redemption from a project." - }, "recordTerminalMigration(uint256,address)": { "notice": "Records the migration of funds from this store." }, @@ -1405,7 +1692,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTerminalStore.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/JBTokens.json b/deployments/nana-core-testnet/optimism_sepolia/JBTokens.json index 1be5ffd3..38c9606c 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/JBTokens.json +++ b/deployments/nana-core-testnet/optimism_sepolia/JBTokens.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTokens", - "address": "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "address": "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "abi": [ { "type": "constructor", @@ -554,9 +554,25 @@ }, { "type": "error", - "name": "ERC1167FailedCreateClone", + "name": "FailedDeployment", "inputs": [] }, + { + "type": "error", + "name": "InsufficientBalance", + "inputs": [ + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "JBControlled_ControllerUnauthorized", @@ -675,203 +691,496 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "contractAddress": null, - "cumulativeGasUsed": "11372130", + "cumulativeGasUsed": "21632947", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000253", - "gasUsed": "10570470", - "hash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "index": 2, + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 5, + "index": 18, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x3969d2d8cd14cc16afecc8db314b1fce952f01aa35f06ead11831fef6682b4c7" + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 19, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 20, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 21, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 22, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 23, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 26, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 27, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 28, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 29, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 30, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 31, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 32, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 33, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 34, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 35, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 37, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 38, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 6, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 7, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 8, + "index": 43, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 9, + "index": 44, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 10, + "index": 45, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 11, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 12, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 13, + "index": 48, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 14, + "index": 49, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 15, + "index": 50, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x", - "index": 16, + "index": 51, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x960de8556a0492552ed5e8c06c584afdaf8456935d850ef72b90b4c3d52ecedf", - "blockNumber": 17317068, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 17, + "index": 52, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x4ad21479490b8051eed8175041719e3a8f0bdec711d78d03033dd9e87fbee06e", - "transactionIndex": 2 + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 } ], - "logsBloom": "0x00000000000010000000000000088000000000000800000000801000000000000080000000000000000400000040920000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000008000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000040000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC1167FailedCreateClone\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedDeployment\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x721dbE852b6b329212F5AEccA1253F291363867A" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161157d38038061157d83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516114a46100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f6201526114a46000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a81565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a9060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df681565b61010f6101dd3660046112ea565b610920565b61015d7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df69060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1002,7 +1311,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTokens.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/SphinxConstants.json b/deployments/nana-core-testnet/optimism_sepolia/SphinxConstants.json index 91ec98f0..9b0b2255 100644 --- a/deployments/nana-core-testnet/optimism_sepolia/SphinxConstants.json +++ b/deployments/nana-core-testnet/optimism_sepolia/SphinxConstants.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "SphinxConstants", - "address": "0x1e03fe41B3bDC81E113F763e83B63336c17c15b9", + "address": "0x1F7eB47e508F03BeDC5660a64D40ba94f53a0721", "abi": [ { "type": "function", @@ -167,224 +167,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "contractAddress": null, - "cumulativeGasUsed": "4468312", + "cumulativeGasUsed": "6726122", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "1000265", - "gasUsed": "2961731", - "hash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "index": 7, + "gasPrice": "1000253", + "gasUsed": "2960558", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "index": 11, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 25, + "index": 36, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x10d7ee38a620a52d22623b28b49f30d53d048baf1701f7dd08e7a659193defe0" + "0x025f394b97e4ee3bd046a29f484624a6efe444fe621423f1c1254a1a08a9fd97" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 26, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 37, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 27, + "index": 38, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 28, + "index": 39, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 29, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 40, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 30, + "index": 41, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 31, + "index": 42, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 32, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 43, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 33, + "index": 44, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 34, + "index": 45, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 35, + "index": 46, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 36, + "index": 47, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 37, + "index": 48, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 38, + "index": 49, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x9f92fafccde120305135f53d18da2e3268ea262c8b670c0bd55f85d0536d8bfb", - "blockNumber": 17701092, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, "data": "0x", - "index": 39, + "index": 50, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0xb81fa5ef3411568e08c140f01ddc331dc4c383f9607ebabf1fdd935ed77487a0", - "transactionIndex": 7 + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 } ], - "logsBloom": "0x00000000000010000000000000082000000000000040200000000000000000000080000000000000000400000040020000000000000400000000000001040800000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200000200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000008010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000042020000000000000400000000000001040000000000000000220000000000020000200000300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000000000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000020010200000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": {}, @@ -395,7 +395,7 @@ "methods": {}, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol", "chainId": "11155420", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/optimism_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json b/deployments/nana-core-testnet/optimism_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json new file mode 100644 index 00000000..089b3d79 --- /dev/null +++ b/deployments/nana-core-testnet/optimism_sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json @@ -0,0 +1,396 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0x4d6dc953965c1e206d79c94ea3c2fcb5e3671ef92a921afb72db08e3209d9697", + "blockNumber": 20943546, + "contractAddress": null, + "cumulativeGasUsed": "231249", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000253", + "gasUsed": "179046", + "hash": "0xadb67597b1ed4a17be516cd29b77acf112d2eebaf2441c1163f0cfc11bf8ebe3", + "index": 1, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x4d6dc953965c1e206d79c94ea3c2fcb5e3671ef92a921afb72db08e3209d9697", + "blockNumber": 20943546, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 0, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xdc41cab65efbeaafe3d84a38fc9a55dca36c8671d3a8b11279a9ff691452cd13" + ], + "transactionHash": "0xadb67597b1ed4a17be516cd29b77acf112d2eebaf2441c1163f0cfc11bf8ebe3", + "transactionIndex": 1 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x4d6dc953965c1e206d79c94ea3c2fcb5e3671ef92a921afb72db08e3209d9697", + "blockNumber": 20943546, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 1, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "transactionHash": "0xadb67597b1ed4a17be516cd29b77acf112d2eebaf2441c1163f0cfc11bf8ebe3", + "transactionIndex": 1 + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000800000000000002000000000400200000000000004000000000000000000000040100000000000000000000000000000003000010000000000001000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000001000000000010000008200000000000004000000000000040000000000000000000000000000020000000000000001000000000000000000000020000000000000000000000000000000000000200000000020000000000000000000000400000000000000000000000020000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 20943546, + "blockHash": "0x4d6dc953965c1e206d79c94ea3c2fcb5e3671ef92a921afb72db08e3209d9697", + "chainId": "11155420", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003848f38f8350d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b5700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055d2c4634e26b1901d5e3b2999d169eb6c4415d685cc07821804316b63beac461c2b8bcb31312cae081eeda115046bb029094f35eb3c03a711a3b5f79e1bc8454766e001a3a98aa57ea4f5856f819498e732de201fda4d293600a09d1ea621af6cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e07860000000000000000000000000000000000000000000000000000000000000041cd4c557e23ad083f5aa69ad5ba8ab151c6270fb64b1f654055648ac09acea61a158877deed36d265d885ee57df764aefde0b352a4be84c937c4cc0e4060909321c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "191396", + "gasPrice": "1000253", + "hash": "0xadb67597b1ed4a17be516cd29b77acf112d2eebaf2441c1163f0cfc11bf8ebe3", + "maxFeePerGas": "1000506", + "maxPriorityFeePerGas": "1000000", + "nonce": 124, + "signature": { + "networkV": null, + "r": "0xa1dcdf176d51344e85029758cb2c5d3a24c9bb9268b71a7e1bf39991f0c9a8fb", + "s": "0x13d2fc259e25ab54616eefca233d41a876ee8e66bf681e0042c94cbe33d006c1", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "contractAddress": null, + "cumulativeGasUsed": "6726122", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000253", + "gasUsed": "2960558", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "index": 11, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 36, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x025f394b97e4ee3bd046a29f484624a6efe444fe621423f1c1254a1a08a9fd97" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 37, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 38, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 39, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 40, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 43, + "topics": [ + "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000000eeee", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 44, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 45, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 48, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 49, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "blockNumber": 20943559, + "data": "0x", + "index": 50, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "transactionIndex": 11 + } + ], + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000042020000000000000400000000000001040000000000000000220000000000020000200000300001040000000000000000000000000000020000008000000000000800008800000020000000200000000000000000000000000000000100000000000000000020000000000000004000000000004000800014000000000000000000002200000000000000100000000004000000000002000020010200000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 20943559, + "blockHash": "0xd2b46d494188118b66c800c375d5ef61e3cec0aabe66eae39f859c4622fcc466", + "chainId": "11155420", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003e04e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000002720000000000000000000000000000000000000000000000000000000000000308000000000000000000000000000000000000000000000000000000000000033a000000000000000000000000000000000000000000000000000000000000038a0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000025c00000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245cc000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000023e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050ba6cf6f724ae11e69a09914a5e7db4b26b0657fe441e45b757e25cb7f9063fa38cab6fb38ec33e0728d366d3ab8253a5f2ee4caf7f8f2ad4e9b11de2546c3cb1f99132a4ab019e1257c3f06159455bcaa2635462a21e989cb7ab47e880aece94ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b44a00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000006e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c6343000817003300000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad70000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ecd80e0387a9b9d252d7790b1dea2e2431dca3819102edfd533fcdc62661de7f0a308bd95adfadd32639ebc16fd65f0d4a6dda61160a644d596968601c33e8526e1fc8703e9253ae2ce254a653629c2c8cb62e6969c85a634b3f9ed47b6051b64ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001800000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002682d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084c6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f631230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052aaed5eaced01ede16ddd441a717409fdbf0630d94a92ad9753062c88a992ccc389f1727f247bd34b768cc045e1c8f063d8a9021af78cb62083e294ab64db513174fc78dc4ae8946ab10459892183b6f62c6c99ab0bb225d97929f3fae1724004ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049c9300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c0957dadf22642292df04c20c17e127b983f91f3344d12e1842e936d31b8a873fde5392ec9fe55653ad9680439a95b9c34b76ffcc1fb6bcf9da6bad0c34b1bbd0dcab9b3f592794213f8b354a9fe3fac0cf2ee8e1e701549ae3129eb3a8f38d44ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490db00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000559bb84cab94c736d0f73c5c08c219802a45a780672ec3bc8650455887d65a9d4c2b8bcb31312cae081eeda115046bb029094f35eb3c03a711a3b5f79e1bc8454766e001a3a98aa57ea4f5856f819498e732de201fda4d293600a09d1ea621af6cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e078600000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "3256424", + "gasPrice": "1000253", + "hash": "0xbc48bae410011fca8bf4d605633ea20db51647a68c1bd3cab795a91725d1d5e3", + "maxFeePerGas": "1000506", + "maxPriorityFeePerGas": "1000000", + "nonce": 125, + "signature": { + "networkV": null, + "r": "0x2ebaecc326e396df22d42ccc06e2b376959df10b0b6aa8a3a8649f5bc692e4ca", + "s": "0x5a8164e23cb2c3945babb09dfd22b412edeae2db49583709fff7cf15210bb8e2", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "5", + "chainId": "11155420", + "actions": [ + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000", + "gas": "2383040", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c6343000817003300000000000000000000000061ec26aa57019c486b10502285c5a3d4a4750ad70000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000", + "gas": "504906", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "value": "0", + "txData": "0xc6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "gas": "157741", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "gas": "302227", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "gas": "299227", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/optimism_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json b/deployments/nana-core-testnet/optimism_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json new file mode 100644 index 00000000..e31841ce --- /dev/null +++ b/deployments/nana-core-testnet/optimism_sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json @@ -0,0 +1,881 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0x2b175668c08ec281e81854e597e0dd5b47406d5e27b78f120ecc2255057ec048", + "blockNumber": 20943396, + "contractAddress": null, + "cumulativeGasUsed": "781776", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000255", + "gasUsed": "180263", + "hash": "0x51a9ddd52c3900aad9d6c7facfb0fa3dca2d81f55c94856ad8f2aa47dbaa2a4c", + "index": 8, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x2b175668c08ec281e81854e597e0dd5b47406d5e27b78f120ecc2255057ec048", + "blockNumber": 20943396, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 12, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xbe8a30b2bb09e661091f815b2288fba8fd8f2aef7314ec804a80c3bdf5eb6dd3" + ], + "transactionHash": "0x51a9ddd52c3900aad9d6c7facfb0fa3dca2d81f55c94856ad8f2aa47dbaa2a4c", + "transactionIndex": 8 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x2b175668c08ec281e81854e597e0dd5b47406d5e27b78f120ecc2255057ec048", + "blockNumber": 20943396, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 13, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "transactionHash": "0x51a9ddd52c3900aad9d6c7facfb0fa3dca2d81f55c94856ad8f2aa47dbaa2a4c", + "transactionIndex": 8 + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000800000000000000000002000400200000000000004000200000000000000000040000000000000000000000000000000003000000000008000001000000000080000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000200000000000000000000000000040000000000000000000000000000020000000000000001020000000200000000000020000000000000000000000000000000080000200000000000000000000000000000000400000000000000000000000000040a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 20943396, + "blockHash": "0x2b175668c08ec281e81854e597e0dd5b47406d5e27b78f120ecc2255057ec048", + "chainId": "11155420", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003a48f38f835732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d4fc11c0b2b0d651f838aeea4ff6bc9e32278b40fc760fb569c4d18a616f2a6f737758cd757a1229adee3da658acad594d0fd8b765084225c74af463c24afe84032650801bc1dba7ed9bba60aff80bd764eebc848dcc89a62c95d4ee6c9b5d85e10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004191987533e4effa4a831fc32a15bf073d02ab57f87e144fb2a0817d9899b6b45527e1753c2152dcd598b74b901ffda9124a88d4232d0fce47c4d96f4d83d250731c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "192642", + "gasPrice": "1000255", + "hash": "0x51a9ddd52c3900aad9d6c7facfb0fa3dca2d81f55c94856ad8f2aa47dbaa2a4c", + "maxFeePerGas": "1000510", + "maxPriorityFeePerGas": "1000000", + "nonce": 121, + "signature": { + "networkV": null, + "r": "0xd6d46c0883af7b1ff04aaec46295b5bf5619db40f2554c42944d52f1b2528d7e", + "s": "0x3622dadd6a13bb6d93809bf163a16759c5bfe6cd4be4ce590fc83df05267fd41", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "contractAddress": null, + "cumulativeGasUsed": "21632947", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000255", + "gasUsed": "20486755", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "index": 7, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 18, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xc06d41a90541a13793c1bed3e7f581dc28fc3e171e29debd42c28971a2670e13" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 19, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 20, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 21, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 22, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 23, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 24, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 25, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 26, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 27, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 28, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 29, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 30, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 31, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 32, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 33, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 34, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 35, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 36, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 37, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 38, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 39, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 40, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 41, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 42, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 43, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 44, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 45, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 46, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 47, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 48, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 49, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 50, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x", + "index": 51, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "blockNumber": 20943402, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 52, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "transactionIndex": 7 + } + ], + "logsBloom": "0x0000000000001000200000000408022000020000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000010000022000000000840000020000130008004000080010000000000000000000002800000000000000000080000000000000000000000041000000048080000000000020000010000000000100000002000004000020000000000002000c000000400000000000000010000002200400000000000100000000024000000000002000000010000000000000000090000000000060000000000001060000010000000000040000004000000000200080000000080040000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 20943402, + "blockHash": "0xf8e8e76e14408ae3b43fa96a9d71043297c01f8d967733f6b54b02c825ac1600", + "chainId": "11155420", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000018e44e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000d00000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000d800000000000000000000000000000000000000000000000000000000000002ba000000000000000000000000000000000000000000000000000000000000046e0000000000000000000000000000000000000000000000000000000000000576000000000000000000000000000000000000000000000000000000000000079a00000000000000000000000000000000000000000000000000000000000008a80000000000000000000000000000000000000000000000000000000000000b4a0000000000000000000000000000000000000000000000000000000000000cda0000000000000000000000000000000000000000000000000000000000000e08000000000000000000000000000000000000000000000000000000000000143a000000000000000000000000000000000000000000000000000000000000146a00000000000000000000000000000000000000000000000000000000000014de000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b506a00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000939df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000066f5a86eee0a96b4ef494c5416f2106d36981f256c3e3dc48d64afd3aa440cf401cacd01e10481c20ad8ded0f65359819c8c10a8fa0297c1674ec27400f13cbb07e0fd992c4eb1c0e6654911b6616d62659a83cc1eb67349f400d988ced239380cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001c600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015f64800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001b69df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a8cfb03a0563c2c0249e04407dd21649a54b8c43fbae0457188f04102fbc47315d67eb4b6cab1f997e771bd0c31a4f9b08bc2589a6b8d0feff4d571abda9160475ced2eac0c6e359339679bcb73c52d7a999345ca9075f2b81199060e65d4df35590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000019800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018556400000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001894df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000061937690b2e483d0d0aa665016e795dafc1fc7cff208dcef6fdd7b8c04339c6370ad999f3197af2899a0817e40a64090da201eeea279e2e593c4f89b95acaed805326a8ee9b67dec89745c7c89ad112ddf98d69b3b763f0ed043052e001983a543d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000ec00000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ed68500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000dcddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062f030c02ddd3bf7b105c923cd40ec637e2d42f7467803ab7207f4a5a9ded7be256377b6e9727dd88bc851e00025dffbdfc4fa4a11bc42f31d06077b8aa392ac191a0a3b42d164ade9a65d04a857b4aa5f7d39e453c18846ffba6e942de3262049f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000021600000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000020800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd96b00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001f85df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006971f20898728dd9f9d47f65c74a9ce7f4205adf9efa0208c79efdfd3cfefe01551f36f9dbe2584709d76d990f3219b35c1b83dcad762b36e939cc67463130cb02662686d2f38f0f4addc8fdd4af28744f85de7517008938b7e1b6c2824865e7c5590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000f200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e67f100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000e3cdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000064c494bd0f60dddc07bc2e4530755c04f1530d57eddf2291996f6fb11d6b7b30baa695a1a143af09324902709f3fe5718f918d9f97ca63f994f82d73434a3c3c320b2b7852c2a7ce860c00e74efdaa8b934fc29514a1d675969810828147131763ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cd2000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002766df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067a7a0bee04e18d53896adb587313ef2b2a302eda38ebbe07314f07d14b00d3649f036786036626c6cb749e9e03482c6e938ace0c9b351c1c23dff78522c92435dd14bfb844506ca5b09733b6d26a61e48a6bb5d2c5c5f417c88a9bfc1c609fe7cc5cc1aad0b93d99ea892b21f861cdb4047e7b6f31ed7017f2a2972ac69451a1c7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000018200000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000017400000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168f6000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001648df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062353eb17927c0d32fc68fdd01dc79c68587a8f8db4943420d6db86bfc01c546173176f0a26ff18ed5fb792c5ba9ea1e636925b4b014497fd7377c767b3eee3a25326a8ee9b67dec89745c7c89ad112ddf98d69b3b763f0ed043052e001983a543d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000aa37dc00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000011200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011285d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000103ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000006b0ebb9761f4663a1c4bfab76b25b843fff830bf034ff18afb928e76b81a3dd9d87694a20b60ebbe46ce3373f3a7f611c170afc2e97ecf135174fa266e7ce2b7875ced2eac0c6e359339679bcb73c52d7a999345ca9075f2b81199060e65d4df35590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000062400000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000061600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b747300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006079df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a870000000000000000000000000000000000000000000000000000000000000000000000000000068c256c7ed8dfa21a76844b6e9e6669bbd2c46a7071f0a01fa8e1452c103c416703818ad7492d47187addc2d19685705cea3aa4f7a41e1c44d0533221cd8d0a4981fd8ec49bc8b5996324223bdd0eff15363f4f1cb6774631e33fc62ac39ab4539dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000251be00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000044a1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006098f5d5c4e6b7a165ce6702b38b5b8914a54082fbd084b21159bd340efaad8a3e47f6f6d6cbdb592929a8e335d7e324f423a66557189418e93b07b07318cc62914c12b8cfb327126393f9541a576e49e4560d8444869b5cad1d745db556126f73d73a4c4d0abd945515b89afefca757cbdb10ce7df8041503178fdc0259dbd052ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006123900000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000490df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065ca0b44d01e8c1331bcd30571f8395d1e5961730eb192ad08b6147df7a5338462f9118fb1a5ea1eff73348abde85e0f1f3866d85cfafb3b486b3a9cf726de66320b2b7852c2a7ce860c00e74efdaa8b934fc29514a1d675969810828147131763ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000003e600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b23b700000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000003d6ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006530467ccb9cb83596da9ca053947abba98c9396a101c032811b80ec3d624496b2f9118fb1a5ea1eff73348abde85e0f1f3866d85cfafb3b486b3a9cf726de66320b2b7852c2a7ce860c00e74efdaa8b934fc29514a1d675969810828147131763ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "22121213", + "gasPrice": "1000255", + "hash": "0x86659374102fd823ff7660b471476cc3e8d0eb77c3b8ae3754ca6b4b2c2a4bc3", + "maxFeePerGas": "1000510", + "maxPriorityFeePerGas": "1000000", + "nonce": 122, + "signature": { + "networkV": null, + "r": "0x6b7262a4f866b914096bd4e3139f11566250b52d8b07a2bbfe2990777cc70b0f", + "s": "0x0e1539efd16b304764200eec06afb94a825ac3fe6ef47ab2e314d0f193fe6fe7", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "contractAddress": null, + "cumulativeGasUsed": "6711347", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "1000255", + "gasUsed": "5652199", + "hash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "index": 12, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 19, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x2964512e4e941a37d6437c1f8f76c28a48d9a6ee74ccde52af98c082d7fe10f7" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x", + "index": 20, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x000000000000000000000000000000000000000000000000000000000000000e", + "index": 21, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x", + "index": 22, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x", + "index": 23, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x000000000000000000000000000000000000000000000000000000000000000f", + "index": 24, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "blockNumber": 20943408, + "data": "0x", + "index": 25, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "transactionIndex": 12 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000008000000000000000000081000000000000000400000040020000000000000400000020000001040000000000000000200000000008400000000000300080040000800000000000000000000000000000000001000000000000000000000000000000000410000000000000000000000200000100000000000000000020000000000000000000000000004000800001000000000000000000002200000000000000100000000024000000000002000000000100000000000000080000000000020000000000000040000000000000000048000004000000000200080000000080000000000088000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 20943408, + "blockHash": "0x2196c1c842ee1fcebba4c0584bed748a23b99c0d5f2d1f8c4bf9d1e3bb6b3ef5", + "chainId": "11155420", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000068c4e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000064400000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000063600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c220d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006265df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a870000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ed9fdaddf0d3667b54913b4ffc4bf02e123e14453fdf67bb52343c9613b5dc84dd43dda7a6ea44bebb6d8421e23e53c500c86c6a06780e43e69022f33d79d4611f187bd0b1692896345e6e40b4dac9505f2a7cef4b85539c2ba1521832a006275eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000aa37dc000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000266ce00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000689cfd05ad46272d2591bc352aa33b608165917861a3eb298f32a8a831f5d686a03818ad7492d47187addc2d19685705cea3aa4f7a41e1c44d0533221cd8d0a4981fd8ec49bc8b5996324223bdd0eff15363f4f1cb6774631e33fc62ac39ab4539dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "7019626", + "gasPrice": "1000255", + "hash": "0x51ada6c18261aae735d427f3f01505acdf91ab7d5323df1cd4d5f6ce0192e9e0", + "maxFeePerGas": "1000510", + "maxPriorityFeePerGas": "1000000", + "nonce": 123, + "signature": { + "networkV": null, + "r": "0x59870f6352fdfa760024755c31ab2fda1407836126c50729bc7769a528bc5c8f", + "s": "0x58bada452c8f5751396f9ac47ddeefafee626ced23f60a6bab6558b9cd50ecbb", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "4", + "chainId": "11155420", + "actions": [ + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "gas": "741482", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1439304", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1594724", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "972421", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "2087275", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "944113", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "gas": "2411808", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6", + "gas": "1478496", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "1124445", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "5993587", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "value": "0", + "txData": "0xa1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001", + "gas": "151998", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "397881", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d", + "gas": "3875767", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "6038029", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "value": "0", + "txData": "0x42842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb0000000000000000000000000000000000000000000000000000000000000001", + "gas": "157390", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/sepolia/JBChainlinkV3PriceFeed.json b/deployments/nana-core-testnet/sepolia/JBChainlinkV3PriceFeed.json index 810b8ec3..eee2ed2c 100644 --- a/deployments/nana-core-testnet/sepolia/JBChainlinkV3PriceFeed.json +++ b/deployments/nana-core-testnet/sepolia/JBChainlinkV3PriceFeed.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBChainlinkV3PriceFeed", - "address": "0x102d93b7860f1927c40B0B1C12264fec5318B0D1", + "address": "0xb340efaB9AC83C42882F78ef6Fc6f177A7f63123", "abi": [ { "type": "constructor", @@ -103,227 +103,227 @@ ] } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "contractAddress": null, - "cumulativeGasUsed": "17639924", + "cumulativeGasUsed": "14166050", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "99331411389", - "gasUsed": "2962955", - "hash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "index": 66, + "gasPrice": "521552484", + "gasUsed": "2961727", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "index": 102, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 85, + "index": 219, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xf4e4f998442a0288d3df1c28b14cc2216ff71a9b0d1d1764585d38dfcbc72d1e" + "0xb89411d51ba5218484f674dd5bc7e369b20d9b3e04e39947fe94970929e7bea4" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 86, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 220, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 87, + "index": 221, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 88, + "index": 222, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 89, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 223, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 90, + "index": 224, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 91, + "index": 225, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 92, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 226, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 93, + "index": 227, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 94, + "index": 228, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 95, + "index": 229, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 96, + "index": 230, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 97, + "index": 231, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 98, + "index": 232, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 99, + "index": 233, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 } ], - "logsBloom": "0x00000000000010000000000000080000000000200040200000000000000000000080000000000000000400000040020000000000000400000000000001048000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200200200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200000300001040000000001000000000000000000020000008000000000000800008800000020000000200000000000000000000000008000000100000000000000000020000000000000004000000000004000820014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"feed\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_IncompleteRound\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"price\",\"type\":\"int256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_NegativePrice\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"updatedAt\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBChainlinkV3PriceFeed_StalePrice\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEED\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"THRESHOLD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentUnitPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"feed\":\"The Chainlink feed to report prices from.\",\"threshold\":\"How many seconds old a price update may be.\"}},\"currentUnitPrice(uint256)\":{\"params\":{\"decimals\":\"The number of decimals the return value should use.\"},\"returns\":{\"_0\":\"The current unit price from the feed, as a fixed point number with the specified number of decimals.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"FEED()\":{\"notice\":\"The Chainlink feed that prices are reported from.\"},\"THRESHOLD()\":{\"notice\":\"How many seconds old a Chainlink price update is allowed to be before considered \\\"stale\\\".\"},\"currentUnitPrice(uint256)\":{\"notice\":\"Gets the current price (per 1 unit) from the feed.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBChainlinkV3PriceFeed.sol\":\"JBChainlinkV3PriceFeed\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"],\"license\":\"MIT\"},\"src/JBChainlinkV3PriceFeed.sol\":{\"keccak256\":\"0x8dc3218e435c83137984f7791e6e25c3ee2fad0499e7f5bbe77817452ac2d6b3\",\"urls\":[\"bzz-raw://dbd141f17a207cadc2486dcbebc74c866be2d21f880e428520222d67f794c64f\",\"dweb:/ipfs/QmU22MDrSdfmBSgmjqpYrXAybo4qsqbkRgQ2RvaPEDsb7e\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0x694AA1769357215DE4FAC081bf1f309aDC325306", "3600" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000694aa1769357215de4fac081bf1f309adc32530681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f000000000000000000000000694aa1769357215de4fac081bf1f309adc3253066001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f000000000000000000000000694aa1769357215de4fac081bf1f309adc3253066001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220c98b17f8fdafe3b2279ee04f108e10d717a71cb5006efd9bb8b709c44fa92f0e64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000694aa1769357215de4fac081bf1f309adc32530681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f0000000000000000000000000000000000000000000000000000000000000e1081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f000000000000000000000000694aa1769357215de4fac081bf1f309adc3253066001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f0000000000000000000000000000000000000000000000000000000000000e1061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f0000000000000000000000000000000000000000000000000000000000000e106024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f000000000000000000000000694aa1769357215de4fac081bf1f309adc3253066001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -359,7 +359,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBChainlinkV3PriceFeed.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBController.json b/deployments/nana-core-testnet/sepolia/JBController.json index 533708fa..04e44954 100644 --- a/deployments/nana-core-testnet/sepolia/JBController.json +++ b/deployments/nana-core-testnet/sepolia/JBController.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBController", - "address": "0x219A5cE6d1c512D5b050ad2E3d380b8746BE0Cb8", + "address": "0x74fc0e2cB3Eb5A2742f8B9F0D6F1263dD3664b5D", "abi": [ { "type": "constructor", @@ -249,7 +249,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -276,7 +276,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -330,11 +330,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -346,7 +341,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -356,7 +351,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -480,7 +475,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -507,7 +502,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -561,11 +556,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -577,7 +567,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -587,7 +577,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -730,7 +720,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -757,7 +747,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -811,11 +801,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -827,7 +812,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -837,7 +822,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -922,7 +907,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -949,7 +934,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1003,11 +988,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1019,7 +999,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1029,7 +1009,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1088,7 +1068,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1108,7 +1088,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1162,11 +1142,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1178,7 +1153,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1188,7 +1163,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1385,7 +1360,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1405,7 +1380,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1459,11 +1434,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1475,7 +1445,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1485,7 +1455,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -1758,7 +1728,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1778,7 +1748,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -1832,11 +1802,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -1848,7 +1813,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -1858,7 +1823,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2295,7 +2260,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -2322,7 +2287,7 @@ "internalType": "uint16" }, { - "name": "redemptionRate", + "name": "cashOutTaxRate", "type": "uint16", "internalType": "uint16" }, @@ -2376,11 +2341,6 @@ "type": "bool", "internalType": "bool" }, - { - "name": "allowCrosschainSuckerExtension", - "type": "bool", - "internalType": "bool" - }, { "name": "ownerMustSendPayouts", "type": "bool", @@ -2392,7 +2352,7 @@ "internalType": "bool" }, { - "name": "useTotalSurplusForRedemptions", + "name": "useTotalSurplusForCashOuts", "type": "bool", "internalType": "bool" }, @@ -2402,7 +2362,7 @@ "internalType": "bool" }, { - "name": "useDataHookForRedeem", + "name": "useDataHookForCashOut", "type": "bool", "internalType": "bool" }, @@ -2893,33 +2853,6 @@ ], "anonymous": false }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AddressInsufficientBalance", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBController_AddingPriceFeedNotAllowed", @@ -2932,7 +2865,7 @@ }, { "type": "error", - "name": "JBController_InvalidRedemptionRate", + "name": "JBController_InvalidCashOutTaxRate", "inputs": [ { "name": "rate", @@ -2988,6 +2921,22 @@ } ] }, + { + "type": "error", + "name": "JBController_OnlyFromTargetTerminal", + "inputs": [ + { + "name": "sender", + "type": "address", + "internalType": "address" + }, + { + "name": "targetTerminal", + "type": "address", + "internalType": "address" + } + ] + }, { "type": "error", "name": "JBController_RulesetSetTokenNotAllowed", @@ -3072,210 +3021,210 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "contractAddress": null, - "cumulativeGasUsed": "27455565", + "cumulativeGasUsed": "23545541", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "137375905", - "gasUsed": "10570440", - "hash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "index": 240, + "gasPrice": "560878992", + "gasUsed": "10258367", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "index": 110, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 266, + "index": 190, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xaa6479e5b718cc047f07bfb708286a56b64dbef8549b40e9b18fa52b6f33d125" + "0xec8c10f9af052122091a14eb2e5e65828dbf6a14566a5ac8c835e18825451d5e" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 267, + "index": 191, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 268, + "index": 192, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 269, + "index": 193, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 270, + "index": 194, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 271, + "index": 195, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 272, + "index": 196, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 273, + "index": 197, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 274, + "index": 198, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 275, + "index": 199, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 276, + "index": 200, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 277, + "index": 201, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 278, + "index": 202, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 } ], - "logsBloom": "0x00000000000010200000000000088000000000000800000000801000000000000080000000000000000400000042120000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000000000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001020200000000008002000000000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000130008004000080000000000000000000000002000000000000000000080000000000000000000000000000000040080000000000020000010000000000100000006000000000000000000000002000c000000000080000000000000000002200400000000000100000000024000000000002000000010000000000000000000000000000060000000000000060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidRedemptionRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"redemptionRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowCrosschainSuckerExtension\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForRedemptions\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForRedeem\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0xd1f668827821ddb22398c30b8f258656f872299eacccc2ee13de91cad1e790a0\",\"urls\":[\"bzz-raw://3b80629f0ba8cab2e936e53a45db851cdf3616b73578ab381777e75dabfaf9cb\",\"dweb:/ipfs/QmZQ888nqPY9XRg2HgefVwYAaT4jeGUBWcbhjL6SiBqtvi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"fundAccessLimits\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_AddingPriceFeedNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_CreditTransfersPaused\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidCashOutTaxRate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBController_InvalidReservedPercent\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_MintNotAllowedAndNotTerminalOrHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_NoReservedTokens\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyDirectory\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"targetTerminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBController_OnlyFromTargetTerminal\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetSetTokenNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsAlreadyLaunched\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_RulesetsArrayEmpty\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToBurn\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBController_ZeroTokensToMint\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"BurnTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchProject\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"LaunchRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Migrate\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reservedPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MintTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PrepMigration\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"QueueRulesets\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReservedDistributionReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendReservedTokensToSplits\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetUri\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FUND_ACCESS_LIMITS\",\"outputs\":[{\"internalType\":\"contract IJBFundAccessLimits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allRulesetsOf\",\"outputs\":[{\"internalType\":\"struct JBRulesetWithMetadata[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnTokensOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"splitTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayReservedTokenToTerminal\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"projectUri\",\"type\":\"string\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchProjectFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"struct JBTerminalConfig[]\",\"name\":\"terminalConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContextsToAccept\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"launchRulesetsFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrate\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"useReservedPercent\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pendingReservedTokenBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRulesetConfig[]\",\"name\":\"rulesetConfigurations\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}]},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueRulesetsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"receiveMigrationFrom\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendReservedTokensToSplitsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setControllerAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"setTerminalsAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setUriOf\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalTokenSupplyWithReservedTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditCount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBRulesetMetadata\",\"name\":\"metadata\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint16\",\"name\":\"reservedPercent\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cashOutTaxRate\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"baseCurrency\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"pausePay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"pauseCreditTransfers\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowOwnerMinting\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetCustomToken\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowTerminalMigration\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetTerminals\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowSetController\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddAccountingContext\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"allowAddPriceFeed\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"ownerMustSendPayouts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"holdFees\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplusForCashOuts\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForPay\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"useDataHookForCashOut\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"dataHook\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"metadata\",\"type\":\"uint16\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"uriOf\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeed(uint256,uint256,uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `ADD_PRICE_FEED`.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add the feed for.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"allRulesetsOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If the `startingId` is 0, passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The array of rulesets with their metadata.\"}},\"burnTokensOf(address,uint256,uint256,string)\":{\"details\":\"Can only be called by the holder, an address with the holder's permission to `BURN_TOKENS`, or a project's terminal.\",\"params\":{\"holder\":\"The address whose tokens are being burned.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being burned.\",\"tokenCount\":\"The number of tokens to burn.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `CLAIM_TOKENS`.\",\"params\":{\"beneficiary\":\"The account the claimed tokens will go to.\",\"holder\":\"The address to redeem credits from.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\",\"tokenCount\":\"The number of tokens to claim.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"fundAccessLimits\":\"A contract that stores fund access limits for each project.\",\"permissions\":\"A contract storing permissions.\",\"prices\":\"A contract that stores prices for each project.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"rulesets\":\"A contract storing and managing project rulesets.\",\"splits\":\"A contract that stores splits for each project.\",\"tokens\":\"A contract that manages token minting and burning.\"}},\"currentRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"metadata\":\"The current ruleset's metadata.\",\"ruleset\":\"The current ruleset's struct.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys the project's ERC-20 contract.Can only be called by the project's owner or an address with the owner's permission to `DEPLOY_ERC20`.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy the ERC-20 for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"details\":\"Can only be called by this controller.\",\"params\":{\"beneficiary\":\"The payment's beneficiary.\",\"metadata\":\"The pay metadata sent to the terminal.\",\"projectId\":\"The ID of the project being paid.\",\"splitTokenCount\":\"The number of tokens being paid.\",\"terminal\":\"The terminal to pay.\",\"token\":\"The token being paid with.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project the ruleset belongs to.\"},\"returns\":{\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The ruleset's struct.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"latestQueuedRulesetOf(uint256)\":{\"details\":\"The 'latest queued ruleset' is the ruleset initialized furthest in the future (at the end of the ruleset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest ruleset of.\"},\"returns\":{\"approvalStatus\":\"The ruleset's approval status.\",\"metadata\":\"The ruleset's metadata.\",\"ruleset\":\"The struct for the project's latest queued ruleset.\"}},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"owner\":\"The project's owner. The project ERC-721 will be minted to this address.\",\"projectUri\":\"The project's metadata URI. This is typically an IPFS hash, optionally with the `ipfs://` prefix. This can be updated by the project's owner.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up for the project.\"},\"returns\":{\"projectId\":\"The project's ID.\"}},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"details\":\"Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to launch rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\",\"terminalConfigurations\":\"The terminals to set up.\"},\"returns\":{\"rulesetId\":\"The ID of the last successfully queued ruleset.\"}},\"migrate(uint256,address)\":{\"details\":\"Can only be called by the directory.\",\"params\":{\"projectId\":\"The ID of the project to migrate.\",\"to\":\"The controller to migrate the project to.\"}},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `MINT_TOKENS`, one of the project's terminals, or the project's data hook.If the ruleset's metadata has `allowOwnerMinting` set to `false`, this function can only be called by the project's terminals or data hook.\",\"params\":{\"beneficiary\":\"The address which will receive the (non-reserved) tokens.\",\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project whose tokens are being minted.\",\"tokenCount\":\"The number of tokens to mint, including any reserved tokens.\",\"useReservedPercent\":\"Whether to apply the ruleset's reserved percent.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted for the `beneficiary`.\"}},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.\",\"params\":{\"memo\":\"A memo to pass along to the emitted event.\",\"projectId\":\"The ID of the project to queue rulesets for.\",\"rulesetConfigurations\":\"The rulesets to queue.\"},\"returns\":{\"rulesetId\":\"The ID of the last ruleset which was successfully queued.\"}},\"receiveMigrationFrom(address,uint256)\":{\"details\":\"This controller should not be the project's controller yet.\",\"params\":{\"from\":\"The controller being migrated from.\",\"projectId\":\"The ID of the project that will migrate to this controller.\"}},\"sendReservedTokensToSplitsOf(uint256)\":{\"details\":\"If the project has no reserved token splits, or if they don't add up to 100%, leftover tokens are sent to the project's owner.\",\"params\":{\"projectId\":\"The ID of the project to send reserved tokens for.\"},\"returns\":{\"_0\":\"The amount of reserved tokens minted and sent.\"}},\"setControllerAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows controllers to be set.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_SPLIT_GROUPS`.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Use a `rulesetId` of 0 to set the default split groups, which are used when a ruleset has no splits set. If there are no default splits and no splits are set, all splits are sent to the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"setTerminalsAllowed(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check.\"},\"returns\":{\"_0\":\"A `bool` which is true if the project allows terminals to be set.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Can only be called by the project's owner or an address with the owner's permission to `SET_TOKEN`.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"setUriOf(uint256,string)\":{\"details\":\"This is typically an IPFS hash, optionally with an `ipfs://` prefix.Can only be called by the project's owner or an address with the owner's permission to `SET_PROJECT_URI`.\",\"params\":{\"projectId\":\"The ID of the project to set the metadata URI of.\",\"uri\":\"The metadata URI to set.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total token supply of.\"},\"returns\":{\"_0\":\"The total supply of the project's token, including pending reserved tokens.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Can only be called by the credit holder or an address with the holder's permission to `TRANSFER_CREDITS`.\",\"params\":{\"creditCount\":\"The number of credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The address to transfer credits to.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"upcomingRulesetOf(uint256)\":{\"details\":\"If an upcoming ruleset isn't found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the next ruleset of.\"},\"returns\":{\"metadata\":\"The upcoming ruleset's metadata.\",\"ruleset\":\"The upcoming ruleset's struct.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FUND_ACCESS_LIMITS()\":{\"notice\":\"A contract that stores fund access limits for each project.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PRICES()\":{\"notice\":\"A contract that stores prices for each project.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"TOKENS()\":{\"notice\":\"The contract that manages token minting and burning.\"},\"addPriceFeed(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for a project.\"},\"allRulesetsOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets (with metadata) up to a maximum array size, sorted from latest to earliest.\"},\"burnTokensOf(address,uint256,uint256,string)\":{\"notice\":\"Burns a project's tokens or credits from the specific holder's balance.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a `beneficiary`'s account.\"},\"currentRulesetOf(uint256)\":{\"notice\":\"A project's currently active ruleset and its metadata.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens (with credits).\"},\"executePayReservedTokenToTerminal(address,uint256,address,uint256,address,bytes)\":{\"notice\":\"When a project receives reserved tokens, if it has a terminal for the token, this is used to pay the terminal.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the `JBRuleset` and `JBRulesetMetadata` corresponding to the specified `rulesetId`.\"},\"latestQueuedRulesetOf(uint256)\":{\"notice\":\"Gets the latest ruleset queued for a project, its approval status, and its metadata.\"},\"launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Creates a project.\"},\"launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)\":{\"notice\":\"Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`.\"},\"migrate(uint256,address)\":{\"notice\":\"Migrate a project from this controller to another one.\"},\"mintTokensOf(uint256,uint256,address,string,bool)\":{\"notice\":\"Add new project tokens or credits to the specified beneficiary's balance. Optionally, reserve a portion according to the ruleset's reserved percent.\"},\"pendingReservedTokenBalanceOf(uint256)\":{\"notice\":\"A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet).\"},\"queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)\":{\"notice\":\"Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook.\"},\"receiveMigrationFrom(address,uint256)\":{\"notice\":\"Prepares this controller to receive a project being migrated from another controller.\"},\"sendReservedTokensToSplitsOf(uint256)\":{\"notice\":\"Sends a project's pending reserved tokens to its reserved token splits.\"},\"setControllerAllowed(uint256)\":{\"notice\":\"Check whether the project's controller can currently be set.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups. The new split groups must include any current splits which are locked.\"},\"setTerminalsAllowed(uint256)\":{\"notice\":\"Check whether the project's terminals can currently be set.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token. If the project's token is already set, this will revert.\"},\"setUriOf(uint256,string)\":{\"notice\":\"Set a project's metadata URI.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"totalTokenSupplyWithReservedTokensOf(uint256)\":{\"notice\":\"Gets the a project token's total supply, including pending reserved tokens.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a credit holder to transfer credits to another address.\"},\"upcomingRulesetOf(uint256)\":{\"notice\":\"A project's next ruleset along with its metadata.\"},\"uriOf(uint256)\":{\"notice\":\"The metadata URI for each project. This is typically an IPFS hash, optionally with an `ipfs://` prefix.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBController.sol\":\"JBController\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBController.sol\":{\"keccak256\":\"0x3d6b6d7c8e116065e8b66939d7013341404741e79b15201e4291fd9478302e13\",\"urls\":[\"bzz-raw://8b03a02c3310559f927934465790c5dd04905def3973176a23dfe8398279da65\",\"dweb:/ipfs/QmeeZpdEjwCzPSJrJNwjMrZq9kGv5o5HL4o7eLTXAivLfL\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSplitGroupIds.sol\":{\"keccak256\":\"0x9b68a957ce0cd35c83d5943957f4028d542c6c9eae624f009c8b8bc0d466de36\",\"urls\":[\"bzz-raw://8d7cd9af5854709ad689c9dad2becc9c4ab0ab6363b9fc0f70aa7f53e27a0167\",\"dweb:/ipfs/QmS1eL5xU5sZjWvdJLBpVEJqKAhhgfjhAJtJMQ7CUHZJZk\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620060a7380380620060a7833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615d7d6200032a6000396000818161027a0152818161095701528181610bc40152818161102601528181611582015281816116e901528181611b9401528181611fa10152818161223e01528181613036015281816130b80152818161322401528181613377015281816133fe01526135bf0152600081816102e001528181611e5201528181612aa00152612f390152600081816105900152818161072701528181610da6015281816110e50152818161175a015281816126bf0152818161297f0152612c9f015260008181610328015281816107c901528181610c7d01528181610d1201528181610f460152818161123d0152818161135a015281816119e301528181611ccf01528181611dc001528181611ea701526121810152600081816102b901526108b201526000818161062a0152612b2701526000818161048f015281816109c501528181610a0701528181610e5401528181611408015281816118670152818161287401528181612bfd01526132de0152600081816103ee0152818161046601526138600152600081816105f001526125ef0152615d7d6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6106203660046145c5565b612002565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063ed1159571161007c578063ed115957146105c5578063f12b64a5146105d8578063f434c914146105eb578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063e18de6b0146105b257600080fd5b8063a2d532e6116100ff578063a2d532e6146104d7578063a312889b146104ea578063b1a50e331461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b15780639ca61b12146104c457600080fd5b806339975571116101b357806354aa1f561161018257806354aa1f56146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613c20565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613c4a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b61029c7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b610315610310366004613c63565b6106fa565b60405161024b929190613e7c565b61029c7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b61035d610358366004613eae565b6107af565b005b61035d61036d366004613eff565b610916565b610267610380366004613c4a565b60006020819052908152604090205481565b61035d6103a0366004613f3e565b6109ba565b6103156103b3366004613c4a565b610b74565b6102676103c6366004613c4a565b610b9f565b6102676103d9366004613ffa565b610c41565b61023f6103ec36600461409d565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c3660046140ba565b610f21565b61044461043f36600461413b565b6110b3565b60405161024b9190614167565b61035d61045f3660046141ca565b611223565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61023f6104bf366004613c4a565b61131a565b6102676104d2366004614215565b611338565b61035d6104e53660046142ed565b6114de565b6104fd6104f8366004613c4a565b6115bb565b60405161024b91906143a6565b61023f610518366004613c4a565b611655565b61035d61052b3660046143b9565b61166e565b61031561053e366004613c4a565b611718565b610556610551366004613c4a565b611731565b60405161024b93929190614401565b61035d61057336600461444b565b6117e5565b610267610586366004614490565b61198f565b61029c7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b6102676105c036600461450b565b611c93565b61035d6105d3366004614573565b611da6565b61035d6105e6366004613f3e565b611e8d565b61029c7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61035d6106203660046145c5565b612002565b61029c7f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f881565b60006001600160e01b03198216634db2677f60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261211c565b610702613b0b565b61070a613b57565b604051630969875760e21b815260048101859052602481018490527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b9190614895565b91506107a68261232b565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c91906148b2565b856012612583565b600061084f856126a1565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e53169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b612583565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261211c565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a91906148cf565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c613b0b565b610b84613b57565b610b8d836126a1565b9150610b988261232b565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906148ec565b6106e9919061491b565b6000858103610c6357604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052610cf8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf091906148b2565b896002612583565b6040516331a9108f60e11b815260048101899052610d8d907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610d61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d8591906148b2565b89600e612583565b6040516319fade8560e11b8152600481018990526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015610df5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1991906148ec565b1115610e38576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050610ec3888686612734565b610ece8888886128ab565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc7581898585610efd612bc5565b604051610f0e959493929190614957565b60405180910390a1979650505050505050565b6040516331a9108f60e11b815260048101879052600090610fb9906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015610f8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb191906148b2565b886007612583565b811561100f57610fc7612bc5565b82604051602001610ff692919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c1690635817819190611065908a908a908a908a908a908a90600401614991565b6020604051808303816000875af1158015611084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a891906148b2565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f43169063fe81dd8090606401600060405180830381865afa15801561112c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261115491908101906149f5565b8051909150806001600160401b0381111561117157611171614640565b6040519080825280602002602001820160405280156111aa57816020015b611197613bfb565b81526020019060019003908161118f5790505b50925060005b818110156112195760008382815181106111cc576111cc614a9a565b6020026020010151905060405180604001604052808281526020016111f08361232b565b81525085838151811061120557611205614a9a565b6020908102919091010152506001016111b0565b5050509392505050565b6040516331a9108f60e11b8152600481018490526112b8907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa15801561128c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112b091906148b2565b846006612583565b60008381526001602052604090206112d1828483614b32565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836112fe612bc5565b60405161130d93929190614bf2565b60405180910390a2505050565b600061132d611328836126a1565b61232b565b610120015192915050565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc849091169063c0715888906024016020604051808303816000875af11580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906148ec565b905087156113ec5760008181526001602052604090206113ea898b83614b32565b505b6040516338a73f9960e11b8152600481018290523060248201527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b03169063714e7f3290604401600060405180830381600087803b15801561145457600080fd5b505af1158015611468573d6000803e3d6000fd5b50505050611477818686612734565b60006114848289896128ab565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c88886114b5612bc5565b6040516114c89796959493929190614c1e565b60405180910390a1509998505050505050505050565b6114fb8585600a6114f6826114f1612bc5565b612bd4565b612c71565b8260000361151c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611553612bc5565b6040516115639493929190614c6e565b60405180910390a360405163124d91e560e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063124d91e5906108dd90889088908890600401614ca1565b600160205260009081526040902080546115d490614ab0565b80601f016020809104026020016040519081016040528092919081815260200182805461160090614ab0565b801561164d5780601f106116225761010080835404028352916020019161164d565b820191906000526020600020905b81548152906001019060200180831161163057829003601f168201915b505050505081565b6000611663611328836126a1565b610100015192915050565b61167a8484600c612583565b6000611685846126a1565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063b1e6d2a1906084016108dd565b611720613b0b565b611728613b57565b610b8d83612c81565b611739613b0b565b611741613b57565b60405163855a54ed60e01b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614cc2565b90935090506117dc8361232b565b91509193909250565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185491906148cf565b80156118ff5750816001600160a01b03167f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b0316635dd8f6aa836040518263ffffffff1660e01b81526004016118b391815260200190565b602060405180830381865afa1580156118d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f491906148b2565b6001600160a01b0316145b15610b705760405163a312889b60e01b8152600481018290526001600160a01b0383169063a312889b90602401600060405180830381865afa158015611949573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119719190810190614cf5565b60008281526001602052604090209061198a9082614d88565b505050565b6000856000036119b25760405163064fae8d60e41b815260040160405180910390fd5b6000806119be896126a1565b6040516331a9108f60e11b8152600481018b9052909150611aa0906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e91906148b2565b8a6009611a5d826114f1612bc5565b80611a88575061010085015160531c6001600160a01b0316611a7d612bc5565b6001600160a01b0316145b806114f657506114f68d86611a9b612bc5565b612cd6565b602081015165ffffffffffff1615801590611ac7575061010081015160461c600190811614155b8015611adc5750611ada896114f1612bc5565b155b8015611b09575061010081015160531c6001600160a01b0316611afd612bc5565b6001600160a01b031614155b8015611b1f5750611b1d8982611a9b612bc5565b155b15611b3d57604051632475c19d60e21b815260040160405180910390fd5b83611b49576000611b53565b61010081015160041c5b61ffff1691506127108214611c0057611b7a88611b7284612710614e47565b612710612d7e565b60405163aab68bdb60e01b81529093506001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb90611bcd908a908d908890600401614ca1565b600060405180830381600087803b158015611be757600080fd5b505af1158015611bfb573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c39612bc5565b604051611c4b96959493929190614e5a565b60405180910390a38115611c8757611c638389614e47565b60008a81526020819052604081208054909190611c8190849061491b565b90915550505b50509695505050505050565b6000838103611cb557604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611d4a907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d4291906148b2565b876002612583565b611d558686866128ab565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585611d84612bc5565b604051611d95959493929190614957565b60405180910390a195945050505050565b6040516331a9108f60e11b815260048101859052611e3b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611e0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e3391906148b2565b856011612583565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169063ed11595790610982908790879087908790600401614ec8565b6040516331a9108f60e11b815260048101839052611f22907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015611ef6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f1a91906148b2565b836008612583565b6000611f2d836126a1565b9050806020015165ffffffffffff16600003611f4f57611f4c83612c81565b90505b61010081015160471c600190811614611f7b57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063f12b64a590604401600060405180830381600087803b158015611fe557600080fd5b505af1158015611ff9573d6000803e3d6000fd5b50505050505050565b33301461200e57600080fd5b6120226001600160a01b0386168886612e52565b60405163fef4325760e01b81526001600160a01b0388169063fef432579061205b9089908990899089906000908a908a90600401615051565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e91906148ec565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa1580156120eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210f91906148ec565b15611ff957611ff96150ac565b6000818152602081905260408120549081900361214c576040516364d7bdaf60e01b815260040160405180910390fd5b6000612157836126a1565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156121d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f491906148b2565b90506000831561221c5761221785846020015165ffffffffffff16600187612f10565b61221f565b60005b905080156122aa5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb9061227790859089908690600401614ca1565b600060405180830381600087803b15801561229157600080fd5b505af11580156122a5573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb8588866122f1612bc5565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612333613b57565b60405180610280016040528061234e84610100015160041c90565b61ffff16815260200161236684610100015160141c90565b61ffff16815260200161237e84610100015160241c90565b63ffffffff1681526020016123a0846101000151600160449190911c81161490565b151581526020016123be846101000151600160459190911c81161490565b151581526020016123dc846101000151600160469190911c81161490565b151581526020016123fa846101000151600160479190911c81161490565b15158152602001612418846101000151600160489190911c81161490565b15158152602001612436846101000151600160499190911c81161490565b151581526020016124548461010001516001604a9190911c81161490565b151581526020016124728461010001516001604b9190911c81161490565b151581526020016124908461010001516001604c9190911c81161490565b151581526020016124ae8461010001516001604d9190911c81161490565b151581526020016124cc8461010001516001604e9190911c81161490565b151581526020016124ea8461010001516001604f9190911c81161490565b15158152602001612508846101000151600160509190911c81161490565b15158152602001612526846101000151600160519190911c81161490565b15158152602001612544846101000151600160529190911c81161490565b1515815260200161255a84610100015160531c90565b6001600160a01b0316815260200161257784610100015160f31c90565b61ffff16905292915050565b600061258d612bc5565b9050836001600160a01b0316816001600160a01b03161415801561265c5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015612636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265a91906148cf565b155b1561269b57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b50505050565b6126a9613b0b565b6040516321d1336160e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c2906024015b61012060405180830381865afa158015612710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e99190614895565b6000816001600160401b0381111561274e5761274e614640565b604051908082528060200260200182016040528015612777578160200160208202803683370190505b50905060005b8281101561285657600084848381811061279957612799614a9a565b90506020028101906127ab91906150c2565b6127b4906150e2565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c8916127ec918a91906004016151df565b600060405180830381600087803b15801561280657600080fd5b505af115801561281a573d6000803e3d6000fd5b50505050806000015183838151811061283557612835614a9a565b6001600160a01b03909216602092830291909101909101525060010161277d565b50811561269b5760405163104373fb60e31b81526001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063821b9fd8906109829087908590600401615257565b6000805b82811015612bbd5760008484838181106128cb576128cb614a9a565b90506020028101906128dd91906152b0565b6128e6906157a5565b905061271061ffff168160a001516000015161ffff1611156129305760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff16111561297b5760a081015160200151604051631344012160e21b815261ffff90911660048201526127106024820152604401610a30565b60007f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166370174dcc8884602001518560400151866060015187608001516129ce8960a00151613694565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7c9190614895565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe169263ed11595792612ad5928c926004016158da565b600060405180830381600087803b158015612aef57600080fd5b505af1158015612b03573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000001b3c23278f91cdcf8d5fe2b37178bdd37c3a90f8169350638f1883cc92612b5d928c926004016159f3565b600060405180830381600087803b158015612b7757600080fd5b505af1158015612b8b573d6000803e3d6000fd5b50612b9d925060019150879050614e47565b8303612bb357806020015165ffffffffffff1693505b50506001016128af565b509392505050565b6000612bcf613850565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690636e49181f90604401602060405180830381865afa158015612c46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6a91906148cf565b9392505050565b8061269b5761269b848484612583565b612c89613b0b565b604051631735e2c560e11b8152600481018390527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031690632e6bc58a906024016126f2565b600080612ce884610100015160531c90565b6001600160a01b031614158015612d76575061010083015160531c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7691906148cf565b949350505050565b6000808060001985870985870292508281108382030391505080600003612db857838281612dae57612dae615aa1565b0492505050612c6a565b838110612de957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ea384826138c5565b61269b576040516001600160a01b03848116602483015260006044830152612f0691869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061396d565b61269b848261396d565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe6001600160a01b0316906369e11cc590606401600060405180830381865afa158015612f88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fb09190810190615ab7565b805190915060005b81811015613689576000838281518110612fd457612fd4614a9a565b602002602001015190506000612fff87836020015163ffffffff16633b9aca0063ffffffff16612d7e565b9050801561363a5760a08201516001600160a01b0316156131cc5760a082015160405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169163aab68bdb9161306e91908e908690600401614ca1565b600060405180830381600087803b15801561308857600080fd5b505af115801561309c573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c91906148b2565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131949190615bbc565b600060405180830381600087803b1580156131ae57600080fd5b505af11580156131c2573d6000803e3d6000fd5b505050505061362d565b60608201516000906001600160a01b03166131ee576131e9612bc5565b6131f4565b82606001515b9050826040015166ffffffffffffff166000146135965760405163ea78803f60e01b8152600481018c90526000907f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b03169063ea78803f90602401602060405180830381865afa158015613273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329791906148b2565b905060006001600160a01b0382161561334e576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690638620265090604401602060405180830381865afa158015613325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334991906148b2565b613351565b60005b90506001600160a01b038216158061337057506001600160a01b038116155b156133fc577f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133c593929190614ca1565b600060405180830381600087803b1580156133df57600080fd5b505af11580156133f3573d6000803e3d6000fd5b5050505061358f565b7f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161344c93929190614ca1565b600060405180830381600087803b15801561346657600080fd5b505af115801561347a573d6000803e3d6000fd5b5050505060008d60405160200161349391815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916134d39186919088908b908b908990600401615c10565b600060405180830381600087803b1580156134ed57600080fd5b505af19250505080156134fe575060015b61358d573d80801561352c576040519150601f19603f3d011682016040523d82523d6000602084013e613531565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461355f612bc5565b60405161356f9493929190615c66565b60405180910390a261358b6001600160a01b03851686886139d0565b505b505b505061362b565b6001600160a01b03811661dead1461362b5760405163aab68bdb60e01b81526001600160a01b037f000000000000000000000000ff5dd171bda8bc78915b9a58d907df7c10ce4e5c169063aab68bdb906135f89084908f908790600401614ca1565b600060405180830381600087803b15801561361257600080fd5b505af1158015613626573d6000803e3d6000fd5b505050505b505b6136378187614e47565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613668612bc5565b60405161367793929190615ca8565b60405180910390a45050600101612fb8565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156136e55768100000000000000000175b8160800151156136fb5768200000000000000000175b8160a00151156137115768400000000000000000175b8160c00151156137275768800000000000000000175b8160e001511561373e576901000000000000000000175b81610100015115613756576902000000000000000000175b8161012001511561376e576904000000000000000000175b81610140015115613786576908000000000000000000175b8161016001511561379e576910000000000000000000175b816101800151156137b6576920000000000000000000175b816101a00151156137ce576940000000000000000000175b816101c00151156137e6576980000000000000000000175b816101e00151156137f857600160501b175b8161020001511561380a57600160511b175b8161022001511561381c57600160521b175b6102408201516102609092015160539290921b600160531b600160f31b03161760f09190911b6001600160f31b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a871614801561388d5750808210155b156138bd5760003661389f8385614e47565b6138aa928290615cd6565b6138b391615d00565b60601c9250505090565b339250505090565b6000806000846001600160a01b0316846040516138e29190615d35565b6000604051808303816000865af19150503d806000811461391f576040519150601f19603f3d011682016040523d82523d6000602084013e613924565b606091505b509150915081801561394e57508051158061394e57508080602001905181019061394e91906148cf565b801561396457506000856001600160a01b03163b115b95945050505050565b60006139826001600160a01b03841683613a01565b905080516000141580156139a75750808060200190518101906139a591906148cf565b155b1561198a57604051635274afe760e01b81526001600160a01b0384166004820152602401610a30565b6040516001600160a01b0383811660248301526044820183905261198a91859182169063a9059cbb90606401612ed4565b6060612c6a8383600084600080856001600160a01b03168486604051613a279190615d35565b60006040518083038185875af1925050503d8060008114613a64576040519150601f19603f3d011682016040523d82523d6000602084013e613a69565b606091505b5091509150613a79868383613a83565b9695505050505050565b606082613a9857613a9382613adf565b612c6a565b8151158015613aaf57506001600160a01b0384163b155b15613ad857604051639996b31560e01b81526001600160a01b0385166004820152602401610a30565b5080612c6a565b805115613aef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161028081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e0810182905261020081018290526102208101829052610240810182905261026081019190915290565b6040518060400160405280613c0e613b0b565b8152602001613c1b613b57565b905290565b600060208284031215613c3257600080fd5b81356001600160e01b031981168114612c6a57600080fd5b600060208284031215613c5c57600080fd5b5035919050565b60008060408385031215613c7657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613cc4606084018265ffffffffffff169052565b506080810151613cdc608084018263ffffffff169052565b5060a0810151613cf760a08401826001600160701b03169052565b5060c0810151613d0f60c084018263ffffffff169052565b5060e0810151613d2a60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613d54602084018261ffff169052565b506040810151613d6c604084018263ffffffff169052565b506060810151613d80606084018215159052565b506080810151613d94608084018215159052565b5060a0810151613da860a084018215159052565b5060c0810151613dbc60c084018215159052565b5060e0810151613dd060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e0808201511515908301526102008082015115159083015261022080820151151590830152610240808201516001600160a01b0316908301526102608082015161ffff81168285015261269b565b6103a08101613e8b8285613c85565b612c6a610120830184613d37565b6001600160a01b0381168114613b0857600080fd5b60008060008060808587031215613ec457600080fd5b8435935060208501359250604085013591506060850135613ee481613e99565b939692955090935050565b8035613efa81613e99565b919050565b60008060008060808587031215613f1557600080fd5b8435613f2081613e99565b935060208501359250604085013591506060850135613ee481613e99565b60008060408385031215613f5157600080fd5b823591506020830135613f6381613e99565b809150509250929050565b60008083601f840112613f8057600080fd5b5081356001600160401b03811115613f9757600080fd5b6020830191508360208260051b8501011115613fb257600080fd5b9250929050565b60008083601f840112613fcb57600080fd5b5081356001600160401b03811115613fe257600080fd5b602083019150836020828501011115613fb257600080fd5b60008060008060008060006080888a03121561401557600080fd5b8735965060208801356001600160401b038082111561403357600080fd5b61403f8b838c01613f6e565b909850965060408a013591508082111561405857600080fd5b6140648b838c01613f6e565b909650945060608a013591508082111561407d57600080fd5b5061408a8a828b01613fb9565b989b979a50959850939692959293505050565b6000602082840312156140af57600080fd5b8135612c6a81613e99565b600080600080600080608087890312156140d357600080fd5b8635955060208701356001600160401b03808211156140f157600080fd5b6140fd8a838b01613fb9565b9097509550604089013591508082111561411657600080fd5b5061412389828a01613fb9565b979a9699509497949695606090950135949350505050565b60008060006060848603121561415057600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156141be578351614198848251613c85565b8501516141a9610120850182613d37565b50928401926103a09290920191600101614183565b50909695505050505050565b6000806000604084860312156141df57600080fd5b8335925060208401356001600160401b038111156141fc57600080fd5b61420886828701613fb9565b9497909650939450505050565b600080600080600080600080600060a08a8c03121561423357600080fd5b893561423e81613e99565b985060208a01356001600160401b038082111561425a57600080fd5b6142668d838e01613fb9565b909a50985060408c013591508082111561427f57600080fd5b61428b8d838e01613f6e565b909850965060608c01359150808211156142a457600080fd5b6142b08d838e01613f6e565b909650945060808c01359150808211156142c957600080fd5b506142d68c828d01613fb9565b915080935050809150509295985092959850929598565b60008060008060006080868803121561430557600080fd5b853561431081613e99565b9450602086013593506040860135925060608601356001600160401b0381111561433957600080fd5b61434588828901613fb9565b969995985093965092949392505050565b60005b83811015614371578181015183820152602001614359565b50506000910152565b60008151808452614392816020860160208601614356565b601f01601f19169290920160200192915050565b602081526000612c6a602083018461437a565b600080600080608085870312156143cf57600080fd5b84356143da81613e99565b93506020850135925060408501356143f181613e99565b9396929550929360600135925050565b6103c081016144108286613c85565b61441e610120830185613d37565b6006831061443c57634e487b7160e01b600052602160045260246000fd5b826103a0830152949350505050565b6000806040838503121561445e57600080fd5b823561446981613e99565b946020939093013593505050565b8015158114613b0857600080fd5b8035613efa81614477565b60008060008060008060a087890312156144a957600080fd5b863595506020870135945060408701356144c281613e99565b935060608701356001600160401b038111156144dd57600080fd5b6144e989828a01613fb9565b90945092505060808701356144fd81614477565b809150509295509295509295565b60008060008060006060868803121561452357600080fd5b8535945060208601356001600160401b038082111561454157600080fd5b61454d89838a01613f6e565b9096509450604088013591508082111561456657600080fd5b5061434588828901613fb9565b6000806000806060858703121561458957600080fd5b843593506020850135925060408501356001600160401b038111156145ad57600080fd5b6145b987828801613f6e565b95989497509550505050565b600080600080600080600060c0888a0312156145e057600080fd5b87356145eb81613e99565b965060208801359550604088013561460281613e99565b945060608801359350608088013561461981613e99565b925060a08801356001600160401b0381111561463457600080fd5b61408a8a828b01613fb9565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561467957614679614640565b60405290565b604080519081016001600160401b038111828210171561467957614679614640565b604051606081016001600160401b038111828210171561467957614679614640565b60405161028081016001600160401b038111828210171561467957614679614640565b60405160c081016001600160401b038111828210171561467957614679614640565b604051608081016001600160401b038111828210171561467957614679614640565b60405161010081016001600160401b038111828210171561467957614679614640565b604051601f8201601f191681016001600160401b038111828210171561477557614775614640565b604052919050565b65ffffffffffff81168114613b0857600080fd5b8051613efa8161477d565b63ffffffff81168114613b0857600080fd5b8051613efa8161479c565b6001600160701b0381168114613b0857600080fd5b8051613efa816147b9565b8051613efa81613e99565b600061012082840312156147f757600080fd5b6147ff614656565b905061480a82614791565b815261481860208301614791565b602082015261482960408301614791565b604082015261483a60608301614791565b606082015261484b608083016147ae565b608082015261485c60a083016147ce565b60a082015261486d60c083016147ae565b60c082015261487e60e083016147d9565b60e082015261010080830151818301525092915050565b600061012082840312156148a857600080fd5b612c6a83836147e4565b6000602082840312156148c457600080fd5b8151612c6a81613e99565b6000602082840312156148e157600080fd5b8151612c6a81614477565b6000602082840312156148fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e9614905565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b85815284602082015260806040820152600061497760808301858761492e565b905060018060a01b03831660608301529695505050505050565b8681526080602082015260006149ab60808301878961492e565b82810360408401526149be81868861492e565b915050826060830152979650505050505050565b60006001600160401b038211156149eb576149eb614640565b5060051b60200190565b60006020808385031215614a0857600080fd5b82516001600160401b03811115614a1e57600080fd5b8301601f81018513614a2f57600080fd5b8051614a42614a3d826149d2565b61474d565b808282526020820191506101206020818502860101935088841115614a6657600080fd5b6020850194505b83851015614a8e57614a7f89866147e4565b83529384019391850191614a6d565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680614ac457607f821691505b602082108103614ae457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561198a576000816000526020600020601f850160051c81016020861015614b135750805b601f850160051c820191505b81811015610b6b57828155600101614b1f565b6001600160401b03831115614b4957614b49614640565b614b5d83614b578354614ab0565b83614aea565b6000601f841160018114614b915760008515614b795750838201355b600019600387901b1c1916600186901b178355614beb565b600083815260209020601f19861690835b82811015614bc25786850135825560209485019460019092019101614ba2565b5086821015614bdf5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b604081526000614c0660408301858761492e565b905060018060a01b0383166020830152949350505050565b87815286602082015260a060408201526000614c3e60a08301878961492e565b8281036060840152614c5181868861492e565b91505060018060a01b038316608083015298975050505050505050565b848152606060208201526000614c8860608301858761492e565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b6000806101408385031215614cd657600080fd5b614ce084846147e4565b915061012083015160068110613f6357600080fd5b600060208284031215614d0757600080fd5b81516001600160401b0380821115614d1e57600080fd5b818401915084601f830112614d3257600080fd5b815181811115614d4457614d44614640565b614d57601f8201601f191660200161474d565b9150808252856020828501011115614d6e57600080fd5b614d7f816020840160208601614356565b50949350505050565b81516001600160401b03811115614da157614da1614640565b614db581614daf8454614ab0565b84614aea565b602080601f831160018114614dea5760008415614dd25750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614e1957888601518255948401946001909101908401614dfa565b5085821015614e375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e9614905565b86815285602082015260a060408201526000614e7a60a08301868861492e565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613efa8161479c565b66ffffffffffffff81168114613b0857600080fd5b8035613efa8161477d565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a81101561503f57898303607f190184528135368d9003603e19018112614f2357600080fd5b8c01803584528386018782013536839003601e19018112614f4357600080fd5b9091018781019190356001600160401b03811115614f6057600080fd5b60c08082023603841315614f7357600080fd5b868a01899052918190526000918b87015b82841015615029578435614f9781614477565b15158152848b0135614fa88161479c565b63ffffffff16818c0152848a0135614fbf81614ea8565b66ffffffffffffff16818b0152848d0135614fd981613e99565b6001600160a01b0316818e0152614ff1858d01614ebd565b65ffffffffffff168c82015260a061500a868201613eef565b6001600160a01b03169082015293810193600193909301928101614f84565b978a019796505050928701925050600101614efd565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c084015261509e818401858761492e565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e198336030181126150d857600080fd5b9190910192915050565b600060408083360312156150f557600080fd5b6150fd61467f565b833561510881613e99565b81526020848101356001600160401b0381111561512457600080fd5b850136601f82011261513557600080fd5b8035615143614a3d826149d2565b8181526060918202830184019184820191903684111561516257600080fd5b938501935b838510156151cc5780853603121561517f5760008081fd5b6151876146a1565b853561519281613e99565b81528587013560ff811681146151a85760008081fd5b81880152858901356151b98161479c565b818a015283529384019391850191615167565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b8281101561524857815180516001600160a01b031685528581015160ff168686015287015163ffffffff16878501529285019290840190600101615209565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156152a35784516001600160a01b03168352938301939183019160010161527e565b5090979650505050505050565b6000823561035e198336030181126150d857600080fd5b8035613efa816147b9565b803561ffff81168114613efa57600080fd5b600061028082840312156152f757600080fd5b6152ff6146c3565b905061530a826152d2565b8152615318602083016152d2565b602082015261532960408301614e9d565b604082015261533a60608301614485565b606082015261534b60808301614485565b608082015261535c60a08301614485565b60a082015261536d60c08301614485565b60c082015261537e60e08301614485565b60e0820152610100615391818401614485565b908201526101206153a3838201614485565b908201526101406153b5838201614485565b908201526101606153c7838201614485565b908201526101806153d9838201614485565b908201526101a06153eb838201614485565b908201526101c06153fd838201614485565b908201526101e061540f838201614485565b90820152610200615421838201614485565b90820152610220615433838201614485565b90820152610240615445838201613eef565b908201526102606154578382016152d2565b9082015292915050565b600082601f83011261547257600080fd5b81356020615482614a3d836149d2565b82815260059290921b840181019181810190868411156154a157600080fd5b8286015b848110156155f55780356001600160401b03808211156154c457600080fd5b908801906040828b03601f19018113156154dd57600080fd5b6154e561467f565b87840135815281840135838111156154fc57600080fd5b8085019450508b603f85011261551157600080fd5b878401359250615523614a3d846149d2565b83815260c09093028401820192888101908d85111561554157600080fd5b948301945b848610156155e05760c0868f03121561555e57600080fd5b6155666146e6565b863561557181614477565b8152868b01356155808161479c565b818c01528685013561559181614ea8565b8186015260608701356155a381613e99565b606082015260808701356155b68161477d565b608082015260a08701356155c981613e99565b60a0820152825260c0959095019490890190615546565b828a01525086525050509183019183016154a5565b509695505050505050565b600082601f83011261561157600080fd5b81356020615621614a3d836149d2565b82815260069290921b8401810191818101908684111561564057600080fd5b8286015b848110156155f5576040818903121561565d5760008081fd5b61566561467f565b81356001600160e01b038116811461567d5760008081fd5b81528185013561568c8161479c565b81860152835291830191604001615644565b600082601f8301126156af57600080fd5b813560206156bf614a3d836149d2565b82815260059290921b840181019181810190868411156156de57600080fd5b8286015b848110156155f55780356001600160401b03808211156157025760008081fd5b908801906080828b03601f190181131561571c5760008081fd5b615724614708565b8784013561573181613e99565b815260408481013561574281613e99565b828a01526060858101358581111561575a5760008081fd5b6157688f8c838a0101615600565b848401525092850135928484111561578257600091508182fd5b6157908e8b86890101615600565b908301525086525050509183019183016156e2565b600061036082360312156157b857600080fd5b6157c061472a565b6157c983614ebd565b81526157d760208401614e9d565b60208201526157e8604084016152c7565b60408201526157f960608401614e9d565b606082015261580a60808401613eef565b608082015261581c3660a085016152e4565b60a08201526103208301356001600160401b038082111561583c57600080fd5b61584836838701615461565b60c084015261034085013591508082111561586257600080fd5b5061586f3682860161569e565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561598b578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b808310156159765761596082855161587b565b60c0820191508a8401935060018301925061594d565b5099505050938601939186019160010161591a565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b838110156159e857815180516001600160e01b0316885283015163ffffffff1683880152604090960195908201906001016159b2565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b8381101561503f578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a9052615a758a86018261599d565b918b0151858303868d0152919050615a8d818361599d565b968901969450505090860190600101615a34565b634e487b7160e01b600052601260045260246000fd5b60006020808385031215615aca57600080fd5b82516001600160401b03811115615ae057600080fd5b8301601f81018513615af157600080fd5b8051615aff614a3d826149d2565b81815260c09182028301840191848201919088841115615b1e57600080fd5b938501935b83851015614a8e5780858a031215615b3b5760008081fd5b615b436146e6565b8551615b4e81614477565b815285870151615b5d8161479c565b81880152604086810151615b7081614ea8565b90820152606086810151615b8381613e99565b90820152608086810151615b968161477d565b9082015260a086810151615ba981613e99565b9082015283529384019391850191615b23565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615c099084018261587b565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615c5a9083018461437a565b98975050505050505050565b6000610120615c75838861587b565b8560c08401528060e0840152615c8d8184018661437a565b91505060018060a01b03831661010083015295945050505050565b6101008101615cb7828661587b565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615ce657600080fd5b83861115615cf357600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615d2d5780818660140360031b1b83161692505b505092915050565b600082516150d881846020870161435656fea2646970667358221220492d94dafc18e57321e4d68d01275a10c3d7c79061f17ff5ea71d1d4f1f4991d64736f6c63430008170033", + "bytecode": "0x6101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b03909116815260200161024b565b61029c7f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b61029c7f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8761029c565b61029c7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc81565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f9091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e1690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f1690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab256001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e6001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -3383,7 +3332,7 @@ "ruleset": "The struct for the project's latest queued ruleset." } }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "This will mint the project's ERC-721 to the `owner`'s address, queue the specified rulesets, and set up the specified splits and terminals. Each operation within this transaction can be done in sequence separately.Anyone can deploy a project to any `owner`'s address.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3396,7 +3345,7 @@ "projectId": "The project's ID." } }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "details": "Each operation within this transaction can be done in sequence separately.Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3428,7 +3377,7 @@ "beneficiaryTokenCount": "The number of tokens minted for the `beneficiary`." } }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "details": "Can only be called by the project's owner or an address with the owner's permission to `QUEUE_RULESETS`.", "params": { "memo": "A memo to pass along to the emitted event.", @@ -3589,10 +3538,10 @@ "latestQueuedRulesetOf(uint256)": { "notice": "Gets the latest ruleset queued for a project, its approval status, and its metadata." }, - "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchProjectFor(address,string,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Creates a project." }, - "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { + "launchRulesetsFor(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],(address,(address,uint8,uint32)[])[],string)": { "notice": "Queue a project's initial rulesets and set up terminals for it. Projects which already have rulesets should use `queueRulesetsOf(...)`." }, "migrate(uint256,address)": { @@ -3604,7 +3553,7 @@ "pendingReservedTokenBalanceOf(uint256)": { "notice": "A project's unrealized reserved token balance (i.e. reserved tokens which haven't been sent out to the reserved token split group yet)." }, - "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { + "queueRulesetsOf(uint256,(uint48,uint32,uint112,uint32,address,(uint16,uint16,uint32,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,bool,address,uint16),(uint256,(bool,uint32,uint56,address,uint48,address)[])[],(address,address,(uint224,uint32)[],(uint224,uint32)[])[])[],string)": { "notice": "Add one or more rulesets to the end of a project's ruleset queue. Rulesets take effect after the previous ruleset in the queue ends, and only if they are approved by the previous ruleset's approval hook." }, "receiveMigrationFrom(address,uint256)": { @@ -3646,7 +3595,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBController.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBDeadline3Days.json b/deployments/nana-core-testnet/sepolia/JBDeadline3Days.json index b6574c18..58111860 100644 --- a/deployments/nana-core-testnet/sepolia/JBDeadline3Days.json +++ b/deployments/nana-core-testnet/sepolia/JBDeadline3Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline3Days", - "address": "0xD77B219eFe7180929364E57404e23fEE5A59eacA", + "address": "0x07C3e488BD36fC6E6EE53082aFD94995Eac329f1", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "contractAddress": null, - "cumulativeGasUsed": "17639924", + "cumulativeGasUsed": "14166050", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "99331411389", - "gasUsed": "2962955", - "hash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "index": 66, + "gasPrice": "521552484", + "gasUsed": "2961727", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "index": 102, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 85, + "index": 219, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xf4e4f998442a0288d3df1c28b14cc2216ff71a9b0d1d1764585d38dfcbc72d1e" + "0xb89411d51ba5218484f674dd5bc7e369b20d9b3e04e39947fe94970929e7bea4" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 86, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 220, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 87, + "index": 221, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 88, + "index": 222, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 89, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 223, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 90, + "index": 224, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 91, + "index": 225, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 92, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 226, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 93, + "index": 227, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 94, + "index": 228, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 95, + "index": 229, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 96, + "index": 230, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 97, + "index": 231, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 98, + "index": 232, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 99, + "index": 233, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 } ], - "logsBloom": "0x00000000000010000000000000080000000000200040200000000000000000000080000000000000000400000040020000000000000400000000000001048000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200200200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200000300001040000000001000000000000000000020000008000000000000800008800000020000000200000000000000000000000008000000100000000000000000020000000000000004000000000004000820014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline3Days.sol\":\"JBDeadline3Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline3Days.sol\":{\"keccak256\":\"0xbc8904cff600ddd9f57e890e683ab841eb1e9361f63da3a5a20644970e43f17a\",\"urls\":[\"bzz-raw://5aaeab64b39ed00cec458ddd4ad5b5e288bc96fe3366c03f2763d28cdbd3ec04\",\"dweb:/ipfs/QmdtEvfa7SEF9Cj16h9MWvsV66MfanURdgjJCKqYqHdSdv\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea26469706673582212207dbf81df004f496c9f3cdee78dd9ec9d4f4832a7ce926ef9a0ffa35b7fc19c5a64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000003f48081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f000000000000000000000000000000000000000000000000000000000003f4808383031061016c57817f000000000000000000000000000000000000000000000000000000000003f48042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline3Days.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBDeadline7Days.json b/deployments/nana-core-testnet/sepolia/JBDeadline7Days.json index f08be7a4..c36503a0 100644 --- a/deployments/nana-core-testnet/sepolia/JBDeadline7Days.json +++ b/deployments/nana-core-testnet/sepolia/JBDeadline7Days.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "JBDeadline7Days", - "address": "0xD8eF2e39846f9361f5483AD28812A40Ea8415AB7", + "address": "0xFb132FF268F2D72415A48FF031E4FFB45f352069", "abi": [ { "type": "constructor", @@ -71,224 +71,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "contractAddress": null, - "cumulativeGasUsed": "17639924", + "cumulativeGasUsed": "14166050", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "99331411389", - "gasUsed": "2962955", - "hash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "index": 66, + "gasPrice": "521552484", + "gasUsed": "2961727", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "index": 102, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 85, + "index": 219, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xf4e4f998442a0288d3df1c28b14cc2216ff71a9b0d1d1764585d38dfcbc72d1e" + "0xb89411d51ba5218484f674dd5bc7e369b20d9b3e04e39947fe94970929e7bea4" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 86, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 220, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 87, + "index": 221, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 88, + "index": 222, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 89, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 223, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 90, + "index": 224, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 91, + "index": 225, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 92, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 226, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 93, + "index": 227, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 94, + "index": 228, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 95, + "index": 229, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 96, + "index": 230, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 97, + "index": 231, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 98, + "index": 232, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 99, + "index": 233, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 } ], - "logsBloom": "0x00000000000010000000000000080000000000200040200000000000000000000080000000000000000400000040020000000000000400000000000001048000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200200200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200000300001040000000001000000000000000000020000008000000000000800008800000020000000200000000000000000000000008000000100000000000000000020000000000000004000000000004000820014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"approvalStatusOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approvalStatusOf(uint256,uint256,uint256)\":{\"params\":{\"rulesetId\":\"The ID of the ruleset to check the status of.\",\"start\":\"The start timestamp of the ruleset to check the status of.\"},\"returns\":{\"_0\":\"The ruleset's approval status.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if this contract adheres to the specified interface.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DURATION()\":{\"notice\":\"The minimum number of seconds between the time a ruleset is queued and the time it starts. If the difference is greater than this number, the ruleset is `Approved`.\"},\"approvalStatusOf(uint256,uint256,uint256)\":{\"notice\":\"The approval status of a given ruleset.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/periphery/JBDeadline7Days.sol\":\"JBDeadline7Days\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDeadline.sol\":{\"keccak256\":\"0xd9fd3dec2aee4b93b08cbce7e7b75d568b94cf3b5d105096a8080ae52eb9af72\",\"urls\":[\"bzz-raw://dab2b799f0258266f87e80b6f1476ed67be9efcdb4c19951ccd6948b348956ef\",\"dweb:/ipfs/Qmcsm9Kub6HcYLFFn8g3bFRxcpQuTunRMrjxXD1KmnszBd\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/periphery/JBDeadline7Days.sol\":{\"keccak256\":\"0x50306fc5dbfb19fc5b10bb7be038fe3d0694e3a3c667e9b47260e1861d713833\",\"urls\":[\"bzz-raw://83dd7ba3afec1329ba11aad2bb8e24957a1bf5cc83a0347c2d2899379d143d99\",\"dweb:/ipfs/QmYj2Ai4skPZV9bN3ygyiWBdRm4wzMgKPnXzKzDja6CdcZ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220b7ced92cc2d3082185d239b2fa0484ade49ec55cab7e9da1a2777fdef5e2d95164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f0000000000000000000000000000000000000000000000000000000000093a8081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f0000000000000000000000000000000000000000000000000000000000093a808383031061016c57817f0000000000000000000000000000000000000000000000000000000000093a8042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -328,7 +328,7 @@ }, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/periphery/JBDeadline7Days.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBDirectory.json b/deployments/nana-core-testnet/sepolia/JBDirectory.json index 67ffeb78..526d271d 100644 --- a/deployments/nana-core-testnet/sepolia/JBDirectory.json +++ b/deployments/nana-core-testnet/sepolia/JBDirectory.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBDirectory", - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", "abi": [ { "type": "constructor", @@ -523,339 +523,339 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x5735aca2dcfa1f5ba6bc33d17de5dacb6e78ef5a2de33ce447d9687daf722b21\",\"urls\":[\"bzz-raw://1682eb78c68f9859fe9d506ad835631dae6b4507d9b886f02ed1538f7b4ce178\",\"dweb:/ipfs/QmdaKHzMJQrsjpPwaqUpEU64LhLkDRTdZegPC1NhSnEEyt\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_DuplicateTerminals\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBDirectory_InvalidProjectIdInDirectory\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetControllerNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBDirectory_SetTerminalsNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBDirectory_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isAllowed\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetIsAllowedToSetFirstController\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetPrimaryTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTerminals\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"controllerOf\",\"outputs\":[{\"internalType\":\"contract IERC165\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isAllowedToSetFirstController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTerminalOf\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"primaryTerminalOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC165\",\"name\":\"controller\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setControllerOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setIsAllowedToSetFirstController\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"terminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPrimaryTerminalOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTerminalsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"terminalsOf\",\"outputs\":[{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"\",\"type\":\"address[]\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"isTerminalOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to check.\",\"terminal\":\"The terminal to check for.\"},\"returns\":{\"_0\":\"A flag indicating whether the project uses the terminal.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"primaryTerminalOf(uint256,address)\":{\"details\":\"Returns the first terminal that accepts the token if the project hasn't explicitly set a primary terminal for it.Returns the zero address if no terminal accepts the token.\",\"params\":{\"projectId\":\"The ID of the project to get the primary terminal of.\",\"token\":\"The token that the terminal accepts.\"},\"returns\":{\"_0\":\"The primary terminal's address.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setControllerOf(uint256,address)\":{\"details\":\"Can only be called if: - The ruleset's metadata has `allowSetController` enabled, and the message's sender is the project's owner or an address with the owner's permission to `SET_CONTROLLER`. - OR the message's sender is the project's current controller. - OR an address which `isAllowedToSetFirstController` is setting a project's first controller.\",\"params\":{\"controller\":\"The address of the controller to set.\",\"projectId\":\"The ID of the project whose controller is being set.\"}},\"setIsAllowedToSetFirstController(address,bool)\":{\"details\":\"Only this contract's owner can call this function.These addresses are vetted controllers as well as contracts designed to launch new projects.A project can set its own controller without being on this list.If you would like to add an address/contract to this list, please reach out to this contract's owner.\",\"params\":{\"addr\":\"The address to allow or not allow.\",\"flag\":\"Whether the address is allowed to set first controllers for projects. Use `true` to allow and `false` to not allow.\"}},\"setPrimaryTerminalOf(uint256,address,address)\":{\"details\":\"The primary terminal for a token is where payments in that token are routed to by default.This is useful in cases where a project has multiple terminals which accept the same token.Can only be called by the project's owner, or an address with the owner's permission to `SET_PRIMARY_TERMINAL`.\",\"params\":{\"projectId\":\"The ID of the project whose primary terminal is being set.\",\"terminal\":\"The terminal being set as the primary terminal.\",\"token\":\"The token to set the primary terminal for.\"}},\"setTerminalsOf(uint256,address[])\":{\"details\":\"Can only be called by the project's owner, an address with the owner's permission to `SET_TERMINALS`, or the project's controller.Unless the caller is the project's controller, the project's ruleset must allow setting terminals.\",\"params\":{\"projectId\":\"The ID of the project whose terminals are being set.\",\"terminals\":\"An array of terminal addresses to set for the project.\"}},\"terminalsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the terminals of.\"},\"returns\":{\"_0\":\"An array of the project's terminal addresses.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"controllerOf(uint256)\":{\"notice\":\"The specified project's controller, which dictates how its terminals interact with its tokens and rulesets.\"},\"isAllowedToSetFirstController(address)\":{\"notice\":\"Whether the specified address is allowed to set a project's first controller on their behalf.\"},\"isTerminalOf(uint256,address)\":{\"notice\":\"Check if a project uses a specific terminal.\"},\"primaryTerminalOf(uint256,address)\":{\"notice\":\"The primary terminal that a project uses for the specified token.\"},\"setControllerOf(uint256,address)\":{\"notice\":\"Set a project's controller. Controllers manage how terminals interact with tokens and rulesets.\"},\"setIsAllowedToSetFirstController(address,bool)\":{\"notice\":\"Add or remove an address/contract from a list of trusted addresses which are allowed to set a first controller for projects.\"},\"setPrimaryTerminalOf(uint256,address,address)\":{\"notice\":\"Set a project's primary terminal for a token.\"},\"setTerminalsOf(uint256,address[])\":{\"notice\":\"Set a project's terminals.\"},\"terminalsOf(uint256)\":{\"notice\":\"The specified project's terminals.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBDirectory.sol\":\"JBDirectory\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBDirectory.sol\":{\"keccak256\":\"0x1f2d2d41758d5ae02caf9585c8d2ee104a57ea4fa2c87f179206eafad1658b6e\",\"urls\":[\"bzz-raw://a4cd663300234d724fe2e4253b39967023005d40ddf3e1029c15ffb6c6f9a28a\",\"dweb:/ipfs/QmdYTcyE4hntr6bswgp6LEvAuZWuutuTF2orRyeuByJsQV\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBMigratable.sol\":{\"keccak256\":\"0x850b5e02e3635b9cb3f3cebd3d49c3847a8ddb2335893cf9f9b8b5ebdf7f9372\",\"urls\":[\"bzz-raw://eb902d6b5a8dd1d51b35fa50b531c06aa34c87e061a315d6f04bc0b85c07762f\",\"dweb:/ipfs/QmWjbRmHjssHqH35PpcHrCk2Jpna7WSrFsGeNJyk3Rbgpc\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b6040516331a9108f60e11b81526004810184905261030b907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea2646970667358221220f6336e102539fe41298a30fa614bd6810aeb3b31c46a420abfd0a63356625a3d64736f6c63430008170033", + "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b6040516331a9108f60e11b81526004810184905261030b907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -973,7 +973,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBDirectory.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBERC20.json b/deployments/nana-core-testnet/sepolia/JBERC20.json index 849b3f41..9e524790 100644 --- a/deployments/nana-core-testnet/sepolia/JBERC20.json +++ b/deployments/nana-core-testnet/sepolia/JBERC20.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBERC20", - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", "abi": [ { "type": "constructor", @@ -993,340 +993,340 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in EIP-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0xb8f69828d41b3594afd7a8c6393565901c205d8b5baf5bd2e42dbac637172979\",\"urls\":[\"bzz-raw://c790253821191ac46b2050d87df820d4209871f90c616381e2c2c00ff3eaac34\",\"dweb:/ipfs/QmcPETTyuZBzDRL39JNXj3SBMdx3Y9o4fPQLSZ27py5Jim\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xc3e1fa9d1987f8d349dfb4d6fe93bf2ca014b52ba335cfac30bfe71e357e6f80\",\"urls\":[\"bzz-raw://c5703ccdeb7b1d685e375ed719117e9edf2ab4bc544f24f23b0d50ec82257229\",\"dweb:/ipfs/QmTdwkbQq7owpCiyuzE7eh5LrD2ddrBCZ5WHVsWPi1RrTS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xc858a86a35701004d89022a5e98819aac46ccbdc4072fc9dd43928a676b1a2ee\",\"urls\":[\"bzz-raw://18acebb483c512c0eaafcb437f09c839972c3f0d36f0201ea7baa2926b987dd2\",\"dweb:/ipfs/Qmd9bf2noaDSYDtf6FMSzKu7LPhuf91jsVNmcoCuTCuGic\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x2a650f6e593cfe5ff2e514a17ea7f593ee70cefa1888066bc983a6308acff4b1\",\"urls\":[\"bzz-raw://9a3477b9665a4b6d19f86bf2cfbfa8c08ba41193f15e68c0d75c0cab7e1fc753\",\"dweb:/ipfs/QmbcurrTatN1PBmkCWdrED8zhAqx5ah9Qp6uR8YwkKWA8V\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x18a7171df639a934592915a520ecb97c5bbc9675a1105607aac8a94e72bf62c6\",\"urls\":[\"bzz-raw://7478e1f13da69a2867ccd883001d836b75620362e743f196376d63ed0c422a1c\",\"dweb:/ipfs/QmWywcQ9TNfwtoqAxbn25d8C5VrV12PrPS9UjtGe6pL2BA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x999f705a027ed6dc2d4e0df2cc4a509852c6bfd11de1c8161bf88832d0503fd0\",\"urls\":[\"bzz-raw://0798def67258d9a3cc20b2b4da7ebf351a5cefe0abfdd665d2d81f8e32f89b21\",\"dweb:/ipfs/QmPEvJosnPfzHNjKvCv2D3891mA2Ww8eUwkqrxBjuYdHCt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0xe19a4d5f31d2861e7344e8e535e2feafb913d806d3e2b5fe7782741a2a7094fe\",\"urls\":[\"bzz-raw://4aed79c0fa6f0546ed02f2f683e8f77f0fd2ed7eb34d8bbf3d373c9a6d95b13c\",\"dweb:/ipfs/QmWqVz6UAVqmnWU5pqYPt1o6iDEZyPaBraAA3rKfTTSfYj\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0xbdc5e074d7dd6678f67e92b1a51a20226801a407b0e1af3da367c5d1ff4519ad\",\"urls\":[\"bzz-raw://a36cca6b22fff3db16fc789ff6c60eea71d4b156065d4d0c83a0bc5e91a77a8b\",\"dweb:/ipfs/QmYN3exd5AemxjBrN8XMB1p5LbbE16uC3sjbYjwi8AjcGR\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0xc7755af115020049e4140f224f9ee88d7e1799ffb0646f37bf0df24bf6213f58\",\"urls\":[\"bzz-raw://7f09bf94d5274334ec021f61a04659db303f31e60460e14b709c9bf187740111\",\"dweb:/ipfs/QmNvgomZYUwFAt4cZbPWAiTeSZQreGehY9BK5xyVJsUttb\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"CheckpointUnorderedInsertion\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ECDSAInvalidSignature\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureLength\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"type\":\"error\",\"name\":\"ECDSAInvalidSignatureS\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"increasedSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cap\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20ExceededSafeSupply\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientAllowance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC20InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSender\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC20InvalidSpender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC2612ExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC2612InvalidSigner\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"},{\"internalType\":\"uint48\",\"name\":\"clock\",\"type\":\"uint48\"}],\"type\":\"error\",\"name\":\"ERC5805FutureLookup\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC6372InconsistentClock\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InvalidAccountNonce\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"SafeCastOverflowedUintDowncast\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"type\":\"error\",\"name\":\"StringTooLong\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"VotesExpiredSignature\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"fromDelegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"toDelegate\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"DelegateChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegate\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"previousVotes\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newVotes\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DelegateVotesChanged\",\"anonymous\":false},{\"inputs\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"CLOCK_MODE\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burn\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"pos\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"checkpoints\",\"outputs\":[{\"internalType\":\"struct Checkpoints.Checkpoint208\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"_key\",\"type\":\"uint48\"},{\"internalType\":\"uint208\",\"name\":\"_value\",\"type\":\"uint208\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"clock\",\"outputs\":[{\"internalType\":\"uint48\",\"name\":\"\",\"type\":\"uint48\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegate\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"delegatee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"delegateBySig\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"delegates\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastTotalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"timepoint\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getPastVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getVotes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"initialize\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"numCheckpoints\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\"},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"CLOCK_MODE()\":{\"details\":\"Machine-readable description of the clock as specified in ERC-6372.\"},\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` 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)\":{\"params\":{\"account\":\"The account to get the balance of.\"},\"returns\":{\"_0\":\"The number of tokens owned by the `account`, as a fixed point number with 18 decimals.\"}},\"burn(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to burn tokens from.\",\"amount\":\"The amount of tokens to burn, as a fixed point number with 18 decimals.\"}},\"checkpoints(address,uint32)\":{\"details\":\"Get the `pos`-th checkpoint for `account`.\"},\"clock()\":{\"details\":\"Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting), in which case {CLOCK_MODE} should be overridden as well to match.\"},\"decimals()\":{\"returns\":{\"_0\":\"The number of decimals.\"}},\"delegate(address)\":{\"details\":\"Delegates votes from the sender to `delegatee`.\"},\"delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Delegates votes from signer to `delegatee`.\"},\"delegates(address)\":{\"details\":\"Returns the delegate that `account` has chosen.\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getPastTotalSupply(uint256)\":{\"details\":\"Returns the total supply of votes available at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. NOTE: This value is the sum of all available votes, which is not necessarily the sum of all delegated votes. Votes that have not been delegated are still part of total supply, even though they would not participate in a vote. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getPastVotes(address,uint256)\":{\"details\":\"Returns the amount of votes that `account` had at a specific moment in the past. If the `clock()` is configured to use block numbers, this will return the value at the end of the corresponding block. Requirements: - `timepoint` must be in the past. If operating using block numbers, the block must be already mined.\"},\"getVotes(address)\":{\"details\":\"Returns the current amount of votes that `account` has.\"},\"initialize(string,string,address)\":{\"params\":{\"name_\":\"The token's name.\",\"owner\":\"The token contract's owner.\",\"symbol_\":\"The token's symbol.\"}},\"mint(address,uint256)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"account\":\"The address to mint the new tokens to.\",\"amount\":\"The amount of tokens to mint, as a fixed point number with 18 decimals.\"}},\"numCheckpoints(address)\":{\"details\":\"Get number of checkpoints for `account`.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"totalSupply()\":{\"returns\":{\"_0\":\"The total supply of this ERC20, as a fixed point number.\"}},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"The balance of the given address.\"},\"burn(address,uint256)\":{\"notice\":\"Burn some outstanding tokens.\"},\"decimals()\":{\"notice\":\"The number of decimals used for this token's fixed point accounting.\"},\"initialize(string,string,address)\":{\"notice\":\"Initializes the token.\"},\"mint(address,uint256)\":{\"notice\":\"Mints more of this token.\"},\"name()\":{\"notice\":\"The token's name.\"},\"nonces(address)\":{\"notice\":\"Required override.\"},\"symbol()\":{\"notice\":\"The token's symbol.\"},\"totalSupply()\":{\"notice\":\"The total supply of this ERC20 i.e. the total number of tokens in existence.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBERC20.sol\":\"JBERC20\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/IVotes.sol\":{\"keccak256\":\"0x5e2b397ae88fd5c68e4f6762eb9f65f65c36702eb57796495f471d024ce70947\",\"urls\":[\"bzz-raw://348fc8e291d54314bb22437b532f443d5dbfb80c8cc9591567c1af6554ccf856\",\"dweb:/ipfs/QmP8ZTyitZinxcpwAHeYHhwj7u21zPpKXSiww38V74sXC2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/governance/utils/Votes.sol\":{\"keccak256\":\"0x9128a324d265044430e5fa4a6a2853e92d6a62a2a5a69c2fc623f5b7b8cf3f34\",\"urls\":[\"bzz-raw://1122c2c8c19d717e45a9c00ccedd9fcd3b61eab6a291469a3d6200671d3e6f25\",\"dweb:/ipfs/QmYEjVC6ttBK1YSECdJmH69LtD2mahbVW27JLv6TUdWKiU\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC5805.sol\":{\"keccak256\":\"0x4b9b89f91adbb7d3574f85394754cfb08c5b4eafca8a7061e2094a019ab8f818\",\"urls\":[\"bzz-raw://7373d5dbb8eb2381aa0883a456fac89283fcaf52f42fa805d4188f270716742a\",\"dweb:/ipfs/QmVnZDmT4ABvNhRJMaQnbCzsCA8HpyHPVaxi4fCi92LFv2\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC6372.sol\":{\"keccak256\":\"0xeb2857b7dafb7e0d8526dbfe794e6c047df2851c9e6ee91dc4a55f3c34af5d33\",\"urls\":[\"bzz-raw://49bf13f6c2a38a9bcc7b852d4e2b9cebb4068b832642cce61069cdb5f06bb2fb\",\"dweb:/ipfs/QmdKAJVE7rR2kENCZnEM1yKswrGii7WuE9gZpsQvnXJhwn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/ERC20Votes.sol\":{\"keccak256\":\"0x62dc9346044aabf22d78541bd495aa6ca05a7f5100aed26196ba35d40b59fcb5\",\"urls\":[\"bzz-raw://5221df4501c74cd4493fee1a0f0788e02c4dc78c3c601e9f557f557c5a53ea92\",\"dweb:/ipfs/QmZpzyYY9dKLrgvYhXSHT93jwqb1UGvtGNMQk5dpECY5pa\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x7d94fa0af099a2172eb01f9c8a8a443cbe7e0e43654841563e4e09968efdb549\",\"urls\":[\"bzz-raw://65e38fb76b6add407d4557753ae83dd1268e8261195dbe5c19a580d5ba6e4e9a\",\"dweb:/ipfs/QmTkGSJtaQrqjcyWM4AgemeEmKgtDydKPPVRajsUJRQSrK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x10eb97d047f8d84fe263a02bb4a656ac6674f6679d74532cc37546289e073a9d\",\"urls\":[\"bzz-raw://3e41287d40b0c46982f1083d40d32de2761f009c5c51627fe79a7feb0ab1cf5c\",\"dweb:/ipfs/Qme7dbh6HX3ZvUJdbQAcVqXkmyXyfcLiUZRhhon3cU6K8p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/structs/Checkpoints.sol\":{\"keccak256\":\"0x66364cd3247ea71cdb58f080f5d5ed6732433a8001413139661841535494692f\",\"urls\":[\"bzz-raw://0f87914c6645b58eaf75f00a156037a7da91129f3a56aec44aebfc715b19ea44\",\"dweb:/ipfs/QmNX7NLSMXyWuogvf8wfCwjUGwLhLBZrGktWPSdoHtERGp\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/types/Time.sol\":{\"keccak256\":\"0x36776530f012618bc7526ceb28e77b85e582cb12d9b9466a71d4bd6bf952e4cc\",\"urls\":[\"bzz-raw://9f867d046908497287d8a67643dd5d7e38c4027af4ab0a74ffbe1d6790c383c6\",\"dweb:/ipfs/QmQ7s9gMP1nkwThFmoDifnGgpUMsMe5q5ZrAxGDsNnRGza\"],\"license\":\"MIT\"},\"src/JBERC20.sol\":{\"keccak256\":\"0x4902934a67f0eb30961a860710f38c14b1c6656acbb7fa3098c78386e6e286a2\",\"urls\":[\"bzz-raw://6816bf77c05030a5a2c288e9a124b8cd9930b617f917b7fa44b292a6d9898de4\",\"dweb:/ipfs/QmXGMowFtwhABiDevRawade1VaydpcQrU9heBQSVs7EtFC\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e0516101005161012051610140516122e7620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122e76000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f00000000000000000000000000000000000000000000000000000000000000006005611499565b60606105997f00000000000000000000000000000000000000000000000000000000000000006006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611cc1565b60405180910390f35b610205610200366004611d93565b610527565b005b61021a610215366004611e07565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611e31565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611e07565b6105cc565b61020561028b366004611e07565b610652565b6101dc610668565b6102c46102a6366004611e6d565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e6d565b6106e0565b6103026102fd366004611e6d565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e6d565b6106f6565b610205610714565b610232610340366004611e6d565b610728565b61034d610733565b6040516101e99796959493929190611e88565b600b546001600160a01b03166102c4565b61023261037f366004611f21565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e6d565b6107fc565b6102056103cc366004611e07565b61082c565b61021a6103df366004611e07565b61083e565b6102056103f2366004611f4b565b61084c565b610205610405366004611fa3565b610909565b61023261041836600461200d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004612040565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e6d565b610a68565b6060600c80546104a490612080565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612080565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612080565b151590508061054257508251155b1561054c57600080fd5b600c610558848261210a565b50600d610565838261210a565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612080565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a16148015610c3b57507f0000000000000000000000000000000000000000000000000000000000aa36a746145b15610c6557507f8e48a73d67ec1271b6abc2a1a0242f1d34a8c1352483825cdb02d443b91cca3390565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d6990856121e0565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e8160016121f3565b92505b505b6000610db18787858561128f565b90508015610dec57610dd687610dc86001846121e0565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed5866112f1565b6112fc565b6001600160a01b03811660009081526009602052604081205461058890611468565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e000000000000000000000000000000000000000000000000076005611499565b60606105997f31000000000000000000000000000000000000000000000000000000000000016006611499565b80546000908015610fa457610f8e83610dc86001846121e0565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061102288888888611544565b9250925092506110328282611613565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a6190836116cc565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f83838361173c565b6000816000036111b957506000919050565b600060016111c6846117a2565b901c6001901b905060018184816111df576111df612206565b048201901c905060018184816111f7576111f7612206565b048201901c9050600181848161120f5761120f612206565b048201901c9050600181848161122757611227612206565b048201901c9050600181848161123f5761123f612206565b048201901c9050600181848161125757611257612206565b048201901c9050600181848161126f5761126f612206565b048201901c9050610a618182858161128957611289612206565b04611836565b60005b818310156112e95760006112a6848461184c565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff1611156112d5578092506112e3565b6112e08160016121f3565b93505b50611292565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561131e5750600081115b1561056f576001600160a01b038316156113c6576001600160a01b038316600090815260096020526040812081906113619061186761135c86611873565b6118a7565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516113bb929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b038216600090815260096020526040812081906113ff906118e061135c86611873565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051611459929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146114b3576114ac836118ec565b9050610588565b8180546114bf90612080565b80601f01602080910402602001604051908101604052809291908181526020018280546114eb90612080565b80156115385780601f1061150d57610100808354040283529160200191611538565b820191906000526020600020905b81548152906001019060200180831161151b57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561157f5750600091506003905082611609565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115d3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166115ff57506000925060019150829050611609565b9250600091508190505b9450945094915050565b60008260038111156116275761162761221c565b03611630575050565b60018260038111156116445761164461221c565b036116625760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116765761167661221c565b036116975760405163fce698f760e01b81526004810182905260240161060e565b60038260038111156116ab576116ab61221c565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff16815481106116fb576116fb612232565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b61174783838361192b565b6001600160a01b03831661179757600061175f61058e565b90506001600160d01b038082111561179457604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a55565b600080608083901c156117b757608092831c92015b604083901c156117c957604092831c92015b602083901c156117db57602092831c92015b601083901c156117ed57601092831c92015b600883901c156117ff57600892831c92015b600483901c1561181157600492831c92015b600283901c1561182357600292831c92015b600183901c156105885760010192915050565b60008183106118455781610a61565b5090919050565b600061185b6002848418612248565b610a61908484166121f3565b6000610a61828461226a565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b6000806118d36118b56107e3565b6118cb6118c188610f74565b868863ffffffff16565b879190611acb565b915091505b935093915050565b6000610a618284612291565b606060006118f983611ad9565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661195657806002600082825461194b91906121f3565b909155506119c89050565b6001600160a01b038316600090815260208190526040902054818110156119a95760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119e457600280548290039055611a03565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a4891815260200190565b60405180910390a3505050565b6001600160a01b038316611a7757611a74600a6118e061135c84611873565b50505b6001600160a01b038216611a9957611a96600a61186761135c84611873565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f929182169116836112fc565b6000806118d3858585611b01565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611c20576000611b1f87610dc86001856121e0565b60408051808201909152905465ffffffffffff808216808452600160301b9092046001600160d01b031660208401529192509087161015611b7357604051632520601d60e01b815260040160405180910390fd5b805165ffffffffffff808816911603611bbf5784611b9688610dc86001866121e0565b80546001600160d01b0392909216600160301b0265ffffffffffff909216919091179055611c10565b6040805180820190915265ffffffffffff80881682526001600160d01b0380881660208085019182528b54600181018d5560008d81529190912094519151909216600160301b029216919091179101555b6020015192508391506118d89050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b0291909316179201919091559050816118d8565b6000815180845260005b81811015611ca157602081850181015186830182015201611c85565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c7b565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611cfb57600080fd5b813567ffffffffffffffff80821115611d1657611d16611cd4565b604051601f8301601f19908116603f01168101908282118183101715611d3e57611d3e611cd4565b81604052838152866020858801011115611d5757600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d8e57600080fd5b919050565b600080600060608486031215611da857600080fd5b833567ffffffffffffffff80821115611dc057600080fd5b611dcc87838801611cea565b94506020860135915080821115611de257600080fd5b50611def86828701611cea565b925050611dfe60408501611d77565b90509250925092565b60008060408385031215611e1a57600080fd5b611e2383611d77565b946020939093013593505050565b600080600060608486031215611e4657600080fd5b611e4f84611d77565b9250611e5d60208501611d77565b9150604084013590509250925092565b600060208284031215611e7f57600080fd5b610a6182611d77565b60ff60f81b881681526000602060e06020840152611ea960e084018a611c7b565b8381036040850152611ebb818a611c7b565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611f0f57835183529284019291840191600101611ef3565b50909c9b505050505050505050505050565b600060208284031215611f3357600080fd5b5035919050565b803560ff81168114611d8e57600080fd5b60008060008060008060c08789031215611f6457600080fd5b611f6d87611d77565b95506020870135945060408701359350611f8960608801611f3a565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611fbe57600080fd5b611fc788611d77565b9650611fd560208901611d77565b95506040880135945060608801359350611ff160808901611f3a565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561202057600080fd5b61202983611d77565b915061203760208401611d77565b90509250929050565b6000806040838503121561205357600080fd5b61205c83611d77565b9150602083013563ffffffff8116811461207557600080fd5b809150509250929050565b600181811c9082168061209457607f821691505b6020821081036120b457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120e35750805b601f850160051c820191505b81811015612102578281556001016120ef565b505050505050565b815167ffffffffffffffff81111561212457612124611cd4565b612138816121328454612080565b846120ba565b602080601f83116001811461216d57600084156121555750858301515b600019600386901b1c1916600185901b178555612102565b600085815260208120601f198616915b8281101561219c5788860151825594840194600190910190840161217d565b50858210156121ba5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b81810381811115610588576105886121ca565b80820180821115610588576105886121ca565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261226557634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561228a5761228a6121ca565b5092915050565b6001600160d01b0381811683821601908082111561228a5761228a6121ca56fea2646970667358221220c8994ab33c62cdf092c828ffa818f8bf6264a04370589dfd19393c46461ea88464736f6c63430008170033", + "bytecode": "0x6101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df616148015610c3b57507f0000000000000000000000000000000000000000000000000000000000aa36a746145b15610c6557507f0acf41a78deb93c57a1dccf2b28835e565501ffab1be33d517914f74712a551d90565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f9c7cae8524849651857e41dcb0fe4f4ab844f18147824e3e8bf5d526700f2c36918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f4a42546f6b656e00000000000000000000000000000000000000000000000007600561150a565b60606105997f3100000000000000000000000000000000000000000000000000000000000001600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { "CLOCK_MODE()": { - "details": "Machine-readable description of the clock as specified in EIP-6372." + "details": "Machine-readable description of the clock as specified in ERC-6372." }, "DOMAIN_SEPARATOR()": { "details": "Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}." @@ -1419,7 +1419,7 @@ "details": "See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`." }, "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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." + "details": "See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. 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 `value`. - the caller must have allowance for ``from``'s tokens of at least `value`." }, "transferOwnership(address)": { "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner." @@ -1460,7 +1460,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBERC20.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBFeelessAddresses.json b/deployments/nana-core-testnet/sepolia/JBFeelessAddresses.json index 6becd7e9..24cfda9a 100644 --- a/deployments/nana-core-testnet/sepolia/JBFeelessAddresses.json +++ b/deployments/nana-core-testnet/sepolia/JBFeelessAddresses.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFeelessAddresses", - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", "abi": [ { "type": "constructor", @@ -171,202 +171,202 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "contractAddress": null, - "cumulativeGasUsed": "27455565", + "cumulativeGasUsed": "23545541", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "137375905", - "gasUsed": "10570440", - "hash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "index": 240, + "gasPrice": "560878992", + "gasUsed": "10258367", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "index": 110, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 266, + "index": 190, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xaa6479e5b718cc047f07bfb708286a56b64dbef8549b40e9b18fa52b6f33d125" + "0xec8c10f9af052122091a14eb2e5e65828dbf6a14566a5ac8c835e18825451d5e" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 267, + "index": 191, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 268, + "index": 192, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 269, + "index": 193, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 270, + "index": 194, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 271, + "index": 195, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 272, + "index": 196, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 273, + "index": 197, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 274, + "index": 198, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 275, + "index": 199, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 276, + "index": 200, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 277, + "index": 201, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 278, + "index": 202, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 } ], - "logsBloom": "0x00000000000010200000000000088000000000000800000000801000000000000080000000000000000400000042120000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000000000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001020200000000008002000000000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000130008004000080000000000000000000000002000000000000000000080000000000000000000000000000000040080000000000020000010000000000100000006000000000000000000000002000c000000000080000000000000000002200400000000000100000000024000000000002000000010000000000000000000000000000060000000000000060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x52f18612ac3fbe5092a91081db84c3d772a23f3cb6d02f88125d933c37b4c0f1\",\"urls\":[\"bzz-raw://23fa878e32b15373540c8439dd177468ab440a76d1c8ad9b8f6bc4c921bd9a31\",\"dweb:/ipfs/QmUhAyPn34XbiauGudPJL3wGGgVKrf8pXjJhCCeDA62g2A\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"isFeeless\",\"type\":\"bool\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFeelessAddress\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isFeeless\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"flag\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFeelessAddress\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"owner\":\"This contract's owner.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setFeelessAddress(address,bool)\":{\"details\":\"Can only be called by this contract's owner.\",\"params\":{\"addr\":\"The address to set as feeless or not feeless.\",\"flag\":\"Whether the address should be feeless (`true`) or not feeless (`false`).\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"isFeeless(address)\":{\"notice\":\"Check if the specified address is feeless.\"},\"setFeelessAddress(address,bool)\":{\"notice\":\"Sets whether an address is feeless.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFeelessAddresses.sol\":\"JBFeelessAddresses\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFeelessAddresses.sol\":{\"keccak256\":\"0x0f6589d2a354511df98bd801ef3097d670cbc92221860ef85dd072c9c22686e4\",\"urls\":[\"bzz-raw://e0f40aad14373fa3a17094d9922611e580a3cd1a6c332bed8b0ca7d1b53bbf84\",\"dweb:/ipfs/QmUQFWtUz3ESAXgCrCjjLbjvbd6kMcmUpdybUDGwTgZJtL\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea2646970667358221220e7dfdd56e0c9f0c68c50074ad3a8270550b1c3b249fe25bb32eba7e19bc825a464736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -418,7 +418,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFeelessAddresses.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBFundAccessLimits.json b/deployments/nana-core-testnet/sepolia/JBFundAccessLimits.json index 5c4e6e56..688449dc 100644 --- a/deployments/nana-core-testnet/sepolia/JBFundAccessLimits.json +++ b/deployments/nana-core-testnet/sepolia/JBFundAccessLimits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBFundAccessLimits", - "address": "0x1b3C23278f91Cdcf8D5Fe2b37178bDD37c3A90F8", + "address": "0x348B92CE8584332DF6272a348D4DDB14A5ec1DCC", "abi": [ { "type": "constructor", @@ -355,368 +355,213 @@ } ] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimit", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidPayoutLimitCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering", "inputs": [] }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowance", - "inputs": [] - }, - { - "type": "error", - "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrency", - "inputs": [] - }, { "type": "error", "name": "JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering", "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "23545541", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "560878992", + "gasUsed": "10258367", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "index": 110, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 190, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 172, - "topics": [ - "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", - "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, - "topics": [ - "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 174, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, - "topics": [ - "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", - "0x0000000000000000000000000000000000000000000000000000000000000001", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 176, - "topics": [ - "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "0x0000000000000000000000000000000000000000000000000000000000000001" + "0xec8c10f9af052122091a14eb2e5e65828dbf6a14566a5ac8c835e18825451d5e" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 177, + "index": 191, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 192, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 179, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 180, + "index": 193, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 194, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 182, - "topics": [ - "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", - "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 195, "topics": [ - "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 184, + "index": 196, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 197, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 186, + "index": 198, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 187, + "index": 199, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 200, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 189, + "index": 201, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, - "topics": [ - "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 192, - "topics": [ - "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", - "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 202, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001020200000000008002000000000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000130008004000080000000000000000000000002000000000000000000080000000000000000000000000000000040080000000000020000010000000000100000006000000000000000000000002000c000000000080000000000000000002200400000000000100000000024000000000002000000010000000000000000000000000000060000000000000060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimit\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0x89a00272e5eede2b1794bce3cbfcb061084ef4e87a47d4fb6edd46b2904d6b15\",\"urls\":[\"bzz-raw://f9d28ea69ba7c60cb55ae1b456e3e528cbbfea1924995e1d6f2ec4ad9cf8d0c2\",\"dweb:/ipfs/QmTLESNyXCZqFfmLYeRS5bZ7ab1xSPeUf9StxVV7TDyP45\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidPayoutLimitCurrencyOrdering\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBFundAccessLimits_InvalidSurplusAllowanceCurrencyOrdering\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBFundAccessLimitGroup\",\"name\":\"fundAccessLimitGroup\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetFundAccessLimits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payoutLimit\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"payoutLimitsOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBFundAccessLimitGroup[]\",\"name\":\"fundAccessLimitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"payoutLimits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setFundAccessLimitsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"surplusAllowance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"surplusAllowancesOf\",\"outputs\":[{\"internalType\":\"struct JBCurrencyAmount[]\",\"name\":\"surplusAllowances\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint224\",\"name\":\"amount\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing the terminals and the controller used by each project.\"}},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency the payout limit is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limit applies to.\",\"token\":\"The token the payout limit applies to.\"},\"returns\":{\"payoutLimit\":\"The payout limit, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the payout limits apply to.\",\"token\":\"The token the payout limits apply to.\"},\"returns\":{\"payoutLimits\":\"The payout limits.\"}},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"details\":\"Only a project's controller can set its fund access limits.Payout limits and surplus allowances must be specified in strictly increasing order (by currency) to prevent duplicates.\",\"params\":{\"fundAccessLimitGroups\":\"An array containing payout limits and surplus allowances for each payment terminal. Amounts are fixed point numbers using the same number of decimals as the associated terminal.\",\"projectId\":\"The ID of the project whose fund access limits are being set.\",\"rulesetId\":\"The ID of the ruleset that the limits will apply within.\"}},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"details\":\"The fixed point return amount will use the same number of decimals as the `terminal`.\",\"params\":{\"currency\":\"The currency that the surplus allowance is denominated in.\",\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowance applies to.\",\"token\":\"The token the surplus allowance applies to.\"},\"returns\":{\"surplusAllowance\":\"The surplus allowance, as a fixed point number with the same number of decimals as the provided terminal.\"}},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"details\":\"The fixed point `amount`s returned will use the same number of decimals as the `terminal`.\",\"params\":{\"projectId\":\"The project's ID.\",\"rulesetId\":\"The ruleset's ID.\",\"terminal\":\"The terminal the surplus allowances apply to.\",\"token\":\"The token the surplus allowances apply to.\"},\"returns\":{\"surplusAllowances\":\"The surplus allowances.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"payoutLimitOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's payout limit for a given ruleset, terminal, token, and currency.\"},\"payoutLimitsOf(uint256,uint256,address,address)\":{\"notice\":\"A project's payout limits for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from the terminal during the ruleset is dictated by a list of payout limits. Each payout limit is a fixed-point amount in terms of a currency.\"},\"setFundAccessLimitsFor(uint256,uint256,(address,address,(uint224,uint32)[],(uint224,uint32)[])[])\":{\"notice\":\"Sets limits on the amount of funds a project can access from its terminals during a ruleset.\"},\"surplusAllowanceOf(uint256,uint256,address,address,uint256)\":{\"notice\":\"A project's surplus allowance for a given ruleset, terminal, token, and currency.\"},\"surplusAllowancesOf(uint256,uint256,address,address)\":{\"notice\":\"A project's surplus allowances for a given ruleset, terminal, and token.The total value of `token`s that a project can pay out from its surplus in a terminal during the ruleset is dictated by a list of surplus allowances. Each surplus allowance is a fixed-point amount in terms of a currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBFundAccessLimits.sol\":\"JBFundAccessLimits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBFundAccessLimits.sol\":{\"keccak256\":\"0xcdfae708622dbaec27730fc94ef2319b65073038f0802b78621ce88e87332954\",\"urls\":[\"bzz-raw://a43925bc1b9cbde7dabf932e3f67aea2201ba623f6d5a77144e50db798bbf36c\",\"dweb:/ipfs/QmZBYNPZqaAjpJP93y5TinnUL8q9A7J4TJr4XEGKNFP1bU\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b506040516110ed3803806110ed83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161105561009860003960008181609201528181610ab50152610b4401526110556000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610bf8565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610bf8565b610208565b6100f26100ed366004610c4a565b6102da565b005b610107610102366004610ccd565b6107d2565b6040516100849190610d17565b610107610122366004610ccd565b610938565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610d75565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610d75565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e481610a95565b8160005b818110156107c9573685858381811061030357610303610d75565b90506020028101906103159190610d8b565b905060006103266040830183610dab565b9050905060005b8181101561054b57366103436040850185610dab565b8381811061035357610353610d75565b6040029190910191506001600160e01b0390506103736020830183610e18565b6001600160e01b0316111561039b576040516379f13c5360e01b815260040160405180910390fd5b63ffffffff6103b06040830160208401610e4e565b63ffffffff1611156103d557604051637fb2017560e01b815260040160405180910390fd5b811580159061043d57506103ec6040850185610dab565b6103f7600185610e69565b81811061040657610406610d75565b905060400201602001602081019061041e9190610e4e565b63ffffffff166104346040830160208401610e4e565b63ffffffff1611155b1561045b57604051632be7371760e21b815260040160405180910390fd5b600061046a6020830183610e18565b6001600160e01b031611156105425760008b8152602081815260408083208d845282528220919061049d90870187610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008560200160208101906104d29190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e08260200160208101906105079190610e4e565b63ffffffff16901b61051c6020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b50600061055b6060840184610dab565b9050905060005b8181101561078257366105786060860186610dab565b8381811061058857610588610d75565b6040029190910191506001600160e01b0390506105a86020830183610e18565b6001600160e01b031611156105d0576040516347517f4560e11b815260040160405180910390fd5b63ffffffff6105e56040830160208401610e4e565b63ffffffff16111561060a57604051632843b4a960e21b815260040160405180910390fd5b811580159061067257506106216060860186610dab565b61062c600185610e69565b81811061063b5761063b610d75565b90506040020160200160208101906106539190610e4e565b63ffffffff166106696040830160208401610e4e565b63ffffffff1611155b156106905760405163fb88f2b960e01b815260040160405180910390fd5b600061069f6020830183610e18565b6001600160e01b031611156107795760008c81526001602090815260408083208e84528252822091906106d490880188610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906107099190610e90565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061073e9190610e4e565b63ffffffff16901b6107536020840184610e18565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b50600101610562565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516107b6929190610f55565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561084a57602002820191906000526020600020905b815481526020019060010190808311610836575b50508351939450839250505067ffffffffffffffff81111561086e5761086e610fec565b6040519080825280602002602001820160405280156108b357816020015b604080518082019091526000808252602082015281526020019060019003908161088c5790505b50925060005b8181101561092d5760008382815181106108d5576108d5610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061091957610919610d75565b6020908102919091010152506001016108b9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156109b257602002820191906000526020600020905b81548152602001906001019080831161099e575b50508351939450839250505067ffffffffffffffff8111156109d6576109d6610fec565b604051908082528060200260200182016040528015610a1b57816020015b60408051808201909152600080825260208201528152602001906001900390816109f45790505b50925060005b8181101561092d576000838281518110610a3d57610a3d610d75565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff16815250858381518110610a8157610a81610d75565b602090810291909101015250600101610a21565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610afc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b209190611002565b6001600160a01b031614610be057604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610b93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb79190611002565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610be057600080fd5b600080600080600060a08688031215610c1057600080fd5b85359450602086013593506040860135610c2981610be3565b92506060860135610c3981610be3565b949793965091946080013592915050565b60008060008060608587031215610c6057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610c8657600080fd5b818701915087601f830112610c9a57600080fd5b813581811115610ca957600080fd5b8860208260051b8501011115610cbe57600080fd5b95989497505060200194505050565b60008060008060808587031215610ce357600080fd5b84359350602085013592506040850135610cfc81610be3565b91506060850135610d0c81610be3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610d6857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610d34565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610da157600080fd5b9190910192915050565b6000808335601e19843603018112610dc257600080fd5b83018035915067ffffffffffffffff821115610ddd57600080fd5b6020019150600681901b3603821315610df557600080fd5b9250929050565b80356001600160e01b0381168114610e1357600080fd5b919050565b600060208284031215610e2a57600080fd5b610e3382610dfc565b9392505050565b803563ffffffff81168114610e1357600080fd5b600060208284031215610e6057600080fd5b610e3382610e3a565b81810381811115610e8a57634e487b7160e01b600052601160045260246000fd5b92915050565b600060208284031215610ea257600080fd5b8135610e3381610be3565b6000808335601e19843603018112610ec457600080fd5b830160208101925035905067ffffffffffffffff811115610ee457600080fd5b8060061b3603821315610df557600080fd5b8183526000602080850194508260005b85811015610f4a576001600160e01b03610f1f83610dfc565b16875263ffffffff610f32848401610e3a565b16878401526040968701969190910190600101610f06565b509495945050505050565b6040815260008335610f6681610be3565b6001600160a01b039081166040840152602085013590610f8582610be3565b8082166060850152610f9a6040870187610ead565b9250608080860152610fb060c086018483610ef6565b925050610fc06060870187610ead565b858403603f190160a0870152610fd7848284610ef6565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561101457600080fd5b8151610e3381610be356fea2646970667358221220abb80f9ba080d15d73ff765467182ee3f7a0fc14e196d1a5c74cf3f7b019283b64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -810,7 +655,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBFundAccessLimits.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBMultiTerminal.json b/deployments/nana-core-testnet/sepolia/JBMultiTerminal.json index 070116f0..b7e449f2 100644 --- a/deployments/nana-core-testnet/sepolia/JBMultiTerminal.json +++ b/deployments/nana-core-testnet/sepolia/JBMultiTerminal.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBMultiTerminal", - "address": "0x4DeF0AA5B9CA095d11705284221b2878731ab4EF", + "address": "0x1052d3669fb28E9e6738E399c40468e733eD3a8d", "abi": [ { "type": "constructor", @@ -32,6 +32,11 @@ "type": "address", "internalType": "contract IJBTerminalStore" }, + { + "name": "tokens", + "type": "address", + "internalType": "contract IJBTokens" + }, { "name": "permit2", "type": "address", @@ -162,6 +167,19 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "TOKENS", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract IJBTokens" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "accountingContextForTokenOf", @@ -312,6 +330,55 @@ "outputs": [], "stateMutability": "payable" }, + { + "type": "function", + "name": "cashOutTokensOf", + "inputs": [ + { + "name": "holder", + "type": "address", + "internalType": "address" + }, + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "tokenToReclaim", + "type": "address", + "internalType": "address" + }, + { + "name": "minTokensReclaimed", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "beneficiary", + "type": "address", + "internalType": "address payable" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [ + { + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "currentSurplusOf", @@ -321,6 +388,28 @@ "type": "uint256", "internalType": "uint256" }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, { "name": "decimals", "type": "uint256", @@ -445,6 +534,29 @@ "outputs": [], "stateMutability": "nonpayable" }, + { + "type": "function", + "name": "executeTransferTo", + "inputs": [ + { + "name": "addr", + "type": "address", + "internalType": "address payable" + }, + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, { "type": "function", "name": "heldFeesOf", @@ -458,11 +570,16 @@ "name": "token", "type": "address", "internalType": "address" + }, + { + "name": "count", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ { - "name": "", + "name": "heldFees", "type": "tuple[]", "internalType": "struct JBFee[]", "components": [ @@ -596,58 +713,14 @@ "name": "token", "type": "address", "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "redeemTokensOf", - "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, - { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "tokenToReclaim", - "type": "address", - "internalType": "address" - }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "minTokensReclaimed", - "type": "uint256", - "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", - "internalType": "address payable" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [ - { - "name": "reclaimAmount", + "name": "count", "type": "uint256", "internalType": "uint256" } ], + "outputs": [], "stateMutability": "nonpayable" }, { @@ -818,6 +891,73 @@ ], "anonymous": false }, + { + "type": "event", + "name": "CashOutTokens", + "inputs": [ + { + "name": "rulesetId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "rulesetCycleNumber", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "projectId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "holder", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "beneficiary", + "type": "address", + "indexed": false, + "internalType": "address" + }, + { + "name": "cashOutCount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "reclaimAmount", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "indexed": false, + "internalType": "bytes" + }, + { + "name": "caller", + "type": "address", + "indexed": false, + "internalType": "address" + } + ], + "anonymous": false + }, { "type": "event", "name": "FeeReverted", @@ -906,22 +1046,22 @@ }, { "type": "event", - "name": "HookAfterRecordPay", + "name": "HookAfterRecordCashOut", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterPayRecordedContext", + "internalType": "struct JBAfterCashOutRecordedContext", "components": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, @@ -936,7 +1076,12 @@ "internalType": "uint256" }, { - "name": "amount", + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "reclaimedAmount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -990,19 +1135,14 @@ ] }, { - "name": "weight", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "projectTokenCount", + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address" + "internalType": "address payable" }, { "name": "hookMetadata", @@ -1010,7 +1150,7 @@ "internalType": "bytes" }, { - "name": "payerMetadata", + "name": "cashOutMetadata", "type": "bytes", "internalType": "bytes" } @@ -1022,6 +1162,12 @@ "indexed": false, "internalType": "uint256" }, + { + "name": "fee", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, { "name": "caller", "type": "address", @@ -1033,22 +1179,22 @@ }, { "type": "event", - "name": "HookAfterRecordRedeem", + "name": "HookAfterRecordPay", "inputs": [ { "name": "hook", "type": "address", "indexed": true, - "internalType": "contract IJBRedeemHook" + "internalType": "contract IJBPayHook" }, { "name": "context", "type": "tuple", "indexed": false, - "internalType": "struct JBAfterRedeemRecordedContext", + "internalType": "struct JBAfterPayRecordedContext", "components": [ { - "name": "holder", + "name": "payer", "type": "address", "internalType": "address" }, @@ -1063,12 +1209,7 @@ "internalType": "uint256" }, { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "reclaimedAmount", + "name": "amount", "type": "tuple", "internalType": "struct JBTokenAmount", "components": [ @@ -1122,14 +1263,19 @@ ] }, { - "name": "redemptionRate", + "name": "weight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "newlyIssuedTokenCount", "type": "uint256", "internalType": "uint256" }, { "name": "beneficiary", "type": "address", - "internalType": "address payable" + "internalType": "address" }, { "name": "hookMetadata", @@ -1137,7 +1283,7 @@ "internalType": "bytes" }, { - "name": "redeemerMetadata", + "name": "payerMetadata", "type": "bytes", "internalType": "bytes" } @@ -1149,12 +1295,6 @@ "indexed": false, "internalType": "uint256" }, - { - "name": "fee", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, { "name": "caller", "type": "address", @@ -1242,7 +1382,7 @@ "internalType": "uint256" }, { - "name": "beneficiaryTokenCount", + "name": "newlyIssuedTokenCount", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -1339,7 +1479,7 @@ }, { "type": "event", - "name": "ProcessFee", + "name": "PayoutTransferReverted", "inputs": [ { "name": "projectId", @@ -1347,29 +1487,29 @@ "indexed": true, "internalType": "uint256" }, + { + "name": "addr", + "type": "address", + "indexed": false, + "internalType": "address" + }, { "name": "token", "type": "address", - "indexed": true, + "indexed": false, "internalType": "address" }, { "name": "amount", "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "wasHeld", - "type": "bool", "indexed": false, - "internalType": "bool" + "internalType": "uint256" }, { - "name": "beneficiary", - "type": "address", + "name": "reason", + "type": "bytes", "indexed": false, - "internalType": "address" + "internalType": "bytes" }, { "name": "caller", @@ -1382,31 +1522,31 @@ }, { "type": "event", - "name": "RedeemTokens", + "name": "ProcessFee", "inputs": [ { - "name": "rulesetId", + "name": "projectId", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "rulesetCycleNumber", - "type": "uint256", + "name": "token", + "type": "address", "indexed": true, - "internalType": "uint256" + "internalType": "address" }, { - "name": "projectId", + "name": "amount", "type": "uint256", "indexed": true, "internalType": "uint256" }, { - "name": "holder", - "type": "address", + "name": "wasHeld", + "type": "bool", "indexed": false, - "internalType": "address" + "internalType": "bool" }, { "name": "beneficiary", @@ -1414,30 +1554,6 @@ "indexed": false, "internalType": "address" }, - { - "name": "redeemCount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "redemptionRate", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "reclaimAmount", - "type": "uint256", - "indexed": false, - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "indexed": false, - "internalType": "bytes" - }, { "name": "caller", "type": "address", @@ -1743,31 +1859,25 @@ }, { "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] + "name": "FailedCall", + "inputs": [] }, { "type": "error", - "name": "AddressInsufficientBalance", + "name": "InsufficientBalance", "inputs": [ { - "name": "account", - "type": "address", - "internalType": "address" + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" } ] }, - { - "type": "error", - "name": "FailedInnerCall", - "inputs": [] - }, { "type": "error", "name": "JBMultiTerminal_AccountingContextAlreadySet", @@ -1992,130 +2102,131 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "contractAddress": null, - "cumulativeGasUsed": "16459326", + "cumulativeGasUsed": "13978758", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "152888181", - "gasUsed": "5730734", - "hash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "index": 105, + "gasPrice": "626173276", + "gasUsed": "5652159", + "hash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "index": 83, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 109, + "index": 144, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xbf4d6a55df0a2640de455026a6d542176306176153009f107cda6a678814635d" + "0xb87067316592cce79ff62ec541f016f9265f14f86f81f036b8fbf15916dfb46e" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x", - "index": 110, + "index": 145, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x000000000000000000000000000000000000000000000000000000000000000e", - "index": 111, + "index": 146, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x", - "index": 112, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x", - "index": 113, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x000000000000000000000000000000000000000000000000000000000000000f", - "index": 114, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x967b6ec9905aaf0e716f440b49873aa63084c6589708f8410cbe9a6c1f416ed8", - "blockNumber": 6698827, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, "data": "0x", - "index": 115, + "index": 150, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x5359512afd2075a14ac2662c940ac3a631494b4a7d2ad0e03ddb41512cb61cd8", - "transactionIndex": 105 + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 } ], - "logsBloom": "0x00000000000010000000000000088000000000000000408000000000000000000081000000000000000400000040020000000000000410000020000001040000000000000000200000000008000000000000340080040000000000000000000040000000000000000000000000000000000000000000000000000010000000000000000000000000000100000000000040000020000000000000000000000000004000800000000000000000020000002200800000000000100000000004000000000002000000000000000000000000000000010000020000000000000040000000000000000048000004000000000200080000000080000000000088000000", + "logsBloom": "0x00000000000010000000000000080000000000000000008000000000000000000081000000000000000400000040020000000000000400000020000001040000000000000000200000000008400000000000300080040000800000000000000000000000000000000000000000000000000000000000000000000410000000010000000000000200000100000000000000000020000000000000000000000000004000800000000000000000000000002200000000000000100000000024000000000002000000000000000000000000080000000000020000000000040040000000000000000048000004002000000200080000000080000000000088000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressEmptyCode\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"AddressInsufficientBalance\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedInnerCall\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"projectTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterRedeemRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"redeemerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordRedeem\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RedeemTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"redeemTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"heldFeesOf(uint256,address)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.\",\"params\":{\"beneficiary\":\"The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.\",\"holder\":\"The account whose tokens are being redeemed.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"currentSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"heldFeesOf(uint256,address)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)\":{\"notice\":\"Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x98256cf37b71a69b2f5a8a6fe975ea03590dff703102bd141a830f94e8adebf6\",\"urls\":[\"bzz-raw://6251fe1f6a1e45e6d619d150c123afc88b8646b38ee26a136efa9a6988a31d3f\",\"dweb:/ipfs/QmeXDT85wSZdP31wkz3ah3KhponCiksJLP5o2LR5e1JxcK\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xb5cd2141ff573c44ad32b4f2e147d7f8aafa8bc60696b54d6772c387581a61e5\",\"urls\":[\"bzz-raw://9605bb87282a8a183b7d6fc62489ce664c859ffd1c653e2504b8b720d6be78c8\",\"dweb:/ipfs/QmSEegf1AVghYwz4rBkj56JPzBgezhywqqPffYio1sBtuf\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x7148d30d6f0e1258b82a2bc0dc20e431a34bdc17e91884fc2aeebedf15ddd284\",\"urls\":[\"bzz-raw://d1883aeb4c15d8374ea65915856e0f718f90b228daaaffa46593d0b03db0c1b4\",\"dweb:/ipfs/Qmb2wmUdXfk6kfD7R1kRir6jB6AbyBAZtfeBE9K49DLek5\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x1920b27db84df39c883579a6f0f06c75a6c60507cae6457ee4360e6da6d53e4b\",\"urls\":[\"bzz-raw://82402bd1ff38c76fc87d57e3b4fc4f6d3ba37d5905aaca11c4c1839c2f020b9f\",\"dweb:/ipfs/QmbWJ7wefdX864Hm6DwoYs8GXS59QYEo5Rzh397aSTR4x7\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x5ce477c270dfcbc570363f8a4d951ecbce7564f374080a56575d273a35b3aa2b\",\"urls\":[\"bzz-raw://57ca35b8f5e9f79b2abca6e4b6706c693d52f6be634996c3a51b9e0f3d4b0244\",\"dweb:/ipfs/QmcEbmRsMx5shJg4ffisJupyb9yULaLW5VZxQnmmUiYWty\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemTerminal.sol\":{\"keccak256\":\"0x9b6baf323be2bf52de9f925410abc4d06ff6292cb6a342274bd4ca6eb4fedde5\",\"urls\":[\"bzz-raw://ec59b6ebdeda8de72d68244da0ee0c43b504791480517f70a751157a7a249c37\",\"dweb:/ipfs/QmcFtyoLyYxoZMGmC75aAqoGznC8BLUKHhDiounHbHNosa\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"feelessAddresses\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"contract IJBSplits\",\"name\":\"splits\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"store\",\"type\":\"address\"},{\"internalType\":\"contract IJBTokens\",\"name\":\"tokens\",\"type\":\"address\"},{\"internalType\":\"contract IPermit2\",\"name\":\"permit2\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"trustedForwarder\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedCall\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_AccountingContextAlreadySet\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_AddingAccountingContextNotAllowed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_FeeTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_NoMsgValueAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_PermitAllowanceNotEnough\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_RecipientProjectTerminalNotFound\"},{\"inputs\":[{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_SplitHookInvalid\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_TerminalTokensIncompatible\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_TokenNotAccepted\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinReturnedTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensPaidOut\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBMultiTerminal_UnderMinTokensReclaimed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBMultiTerminal_ZeroAccountingContextDecimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddToBalance\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"CashOutTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"feeProjectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"FeeReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HoldFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterCashOutRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"reclaimedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"cashOutMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordCashOut\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"struct JBAfterPayRecordedContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"forwardedAmount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"hookMetadata\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"payerMetadata\",\"type\":\"bytes\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"specificationAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"HookAfterRecordPay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"MigrateTerminal\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"newlyIssuedTokenCount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Pay\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"PayoutTransferReverted\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"wasHeld\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ProcessFee\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"returnedFees\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"leftoverAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ReturnHeldFees\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"group\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayoutToSplit\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"projectOwner\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netLeftoverPayoutAmount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SendPayouts\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"context\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetAccountingContext\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"feeBeneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"UseAllowance\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FEELESS_ADDRESSES\",\"outputs\":[{\"internalType\":\"contract IJBFeelessAddresses\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMIT2\",\"outputs\":[{\"internalType\":\"contract IPermit2\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"SPLITS\",\"outputs\":[{\"internalType\":\"contract IJBSplits\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"STORE\",\"outputs\":[{\"internalType\":\"contract IJBTerminalStore\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKENS\",\"outputs\":[{\"internalType\":\"contract IJBTokens\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextForTokenOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"accountingContextsOf\",\"outputs\":[{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addAccountingContextsFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"shouldReturnHeldFees\",\"type\":\"bool\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"addToBalanceOf\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenToReclaim\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minTokensReclaimed\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"cashOutTokensOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"originalMessageSender\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executePayout\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netPayoutAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"feeTerminal\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeProcessFee\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"executeTransferTo\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"heldFeesOf\",\"outputs\":[{\"internalType\":\"struct JBFee[]\",\"name\":\"heldFees\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"unlockTimestamp\",\"type\":\"uint48\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"forwarder\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isTrustedForwarder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract IJBTerminal\",\"name\":\"to\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"migrateBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minReturnedTokens\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\",\"name\":\"pay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"beneficiaryTokenCount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"processHeldFeesOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"sendPayoutsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"trustedForwarder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minTokensPaidOut\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"feeBeneficiary\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"memo\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"useAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"netAmountPaidOut\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"accountingContextForTokenOf(uint256,address)\":{\"details\":\"See the `JBAccountingContext` struct for more information.\",\"params\":{\"projectId\":\"The ID of the project to get token accounting context of.\",\"token\":\"The token to check the accounting context of.\"},\"returns\":{\"_0\":\"The token's accounting context for the token.\"}},\"accountingContextsOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the accepted tokens of.\"},\"returns\":{\"_0\":\"tokenContexts The accounting contexts of the accepted tokens.\"}},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"details\":\"Only a project's owner, an operator with the `ADD_ACCOUNTING_CONTEXTS` permission from that owner, or a project's controller can add accounting contexts for the project.\",\"params\":{\"accountingContexts\":\"The accounting contexts to add.\",\"projectId\":\"The ID of the project having to add accounting contexts for.\"}},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"details\":\"Adding to balance can unlock held fees if `shouldUnlockHeldFees` is true.\",\"params\":{\"amount\":\"The amount of tokens to add to the balance, as a fixed point number with the same number of decimals as this terminal. If this is a native token terminal, this is ignored and `msg.value` is used instead.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Extra data to pass along to the emitted event.\",\"projectId\":\"The ID of the project to add funds to the balance of.\",\"shouldReturnHeldFees\":\"A flag indicating if held fees should be returned based on the amount being added.\",\"token\":\"The token being added to the balance.\"}},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"details\":\"Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.\",\"params\":{\"beneficiary\":\"The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account whose tokens are being cashed out.\",\"metadata\":\"Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.\",\"minTokensReclaimed\":\"The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.\",\"projectId\":\"The ID of the project the project tokens belong to.\",\"tokenToReclaim\":\"The token being reclaimed.\"},\"returns\":{\"reclaimAmount\":\"The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals.\"}},\"constructor\":{\"params\":{\"feelessAddresses\":\"A contract that stores addresses that shouldn't incur fees when being paid towards or from.\",\"permissions\":\"A contract storing permissions.\",\"permit2\":\"A permit2 utility.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\",\"splits\":\"A contract that stores splits for each project.\",\"store\":\"A contract that stores the terminal's data.\",\"trustedForwarder\":\"A trusted forwarder of transactions to this contract.\"}},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).\",\"params\":{\"accountingContexts\":\"The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.\",\"currency\":\"The currency to express the returned value in terms of.\",\"decimals\":\"The number of decimals to include in the fixed point returned value.\",\"projectId\":\"The ID of the project to get the current total surplus of.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in this terminal, in terms of `currency` and with the specified number of decimals.\"}},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The total amount being paid to the split, as a fixed point number with the same number of decimals as this terminal.\",\"projectId\":\"The ID of the project the split belongs to.\",\"split\":\"The split to pay.\",\"token\":\"The address of the token being paid to the split.\"},\"returns\":{\"netPayoutAmount\":\"The amount sent to the split after subtracting fees.\"}},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"amount\":\"The fee amount, as a fixed point number with 18 decimals.\",\"beneficiary\":\"The address to mint tokens to (from the project which receives fees), and pass along to the ruleset's data hook and pay hook if applicable.\",\"feeTerminal\":\"The terminal that'll receive the fees.\",\"projectId\":\"The ID of the project paying the fee.\",\"token\":\"The token the fee is being paid in.\"}},\"executeTransferTo(address,address,uint256)\":{\"details\":\"Only accepts calls from this terminal itself.\",\"params\":{\"addr\":\"The address to transfer funds to.\",\"amount\":\"The amount of tokens to transfer.\",\"token\":\"The token to transfer.\"}},\"heldFeesOf(uint256,address,uint256)\":{\"details\":\"Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.\",\"params\":{\"projectId\":\"The ID of the project that is holding fees.\",\"token\":\"The token that the fees are held in.\"}},\"isTrustedForwarder(address)\":{\"details\":\"Indicates whether any particular address is the trusted forwarder.\"},\"migrateBalanceOf(uint256,address,address)\":{\"details\":\"Only a project's owner or an operator with the `MIGRATE_TERMINAL` permission from that owner can migrate the project's terminal.\",\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"to\":\"The terminal contract being migrated to, which will receive the project's funds and operations.\",\"token\":\"The address of the token being migrated.\"},\"returns\":{\"balance\":\"The amount of funds that were migrated, as a fixed point number with the same amount of decimals as this terminal.\"}},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"params\":{\"amount\":\"The amount of terminal tokens being received, as a fixed point number with the same number of decimals as this terminal. If this terminal's token is native, this is ignored and `msg.value` is used in its place.\",\"beneficiary\":\"The address to mint tokens to, and pass along to the ruleset's data hook and pay hook if applicable.\",\"memo\":\"A memo to pass along to the emitted event.\",\"metadata\":\"Bytes to pass along to the emitted event, as well as the data hook and pay hook if applicable.\",\"minReturnedTokens\":\"The minimum number of project tokens expected in return for this payment, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the payment is reverted.\",\"projectId\":\"The ID of the project being paid.\",\"token\":\"The token being paid.\"},\"returns\":{\"beneficiaryTokenCount\":\"The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals.\"}},\"processHeldFeesOf(uint256,address,uint256)\":{\"params\":{\"count\":\"The number of fees to process.\",\"projectId\":\"The ID of the project to process held fees for.\",\"token\":\"The token to process held fees for.\"}},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"details\":\"If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.\",\"params\":{\"amount\":\"The total number of terminal tokens to send, as a fixed point number with same number of decimals as this terminal.\",\"currency\":\"The expected currency of the payouts being sent. Must match the currency of one of the project's current ruleset's payout limits.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that the `amount` should be worth (if expressed in terms of this terminal's currency), as a fixed point number with the same number of decimals as this terminal. If the amount of tokens paid out would be less than this amount, the send is reverted.\",\"projectId\":\"The ID of the project having its payouts sent.\",\"token\":\"The token being sent.\"},\"returns\":{\"amountPaidOut\":\"The total amount paid out.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"trustedForwarder()\":{\"details\":\"Returns the address of the trusted forwarder.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"details\":\"Only a project's owner or an operator with the `USE_ALLOWANCE` permission from that owner can use the surplus allowance.Incurs the protocol fee unless the caller is a feeless address.\",\"params\":{\"amount\":\"The amount of terminal tokens to use from the project's current surplus allowance, as a fixed point number with the same amount of decimals as this terminal.\",\"beneficiary\":\"The address to send the surplus funds to.\",\"currency\":\"The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.\",\"feeBeneficiary\":\"The address to send the tokens resulting from paying the fee.\",\"memo\":\"A memo to pass along to the emitted event.\",\"minTokensPaidOut\":\"The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\",\"token\":\"The token being paid out from the surplus.\"},\"returns\":{\"netAmountPaidOut\":\"The number of tokens that were sent to the beneficiary, as a fixed point number with the same amount of decimals as the terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for PROJECTS.\"},\"FEE()\":{\"notice\":\"This terminal's fee (as a fraction out of `JBConstants.MAX_FEE`).\"},\"FEELESS_ADDRESSES()\":{\"notice\":\"The contract that stores addresses that shouldn't incur fees when being paid towards or from.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PERMIT2()\":{\"notice\":\"The permit2 utility.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"SPLITS()\":{\"notice\":\"The contract that stores splits for each project.\"},\"STORE()\":{\"notice\":\"The contract that stores and manages the terminal's data.\"},\"TOKENS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"accountingContextForTokenOf(uint256,address)\":{\"notice\":\"A project's accounting context for a token.\"},\"accountingContextsOf(uint256)\":{\"notice\":\"The tokens accepted by a project.\"},\"addAccountingContextsFor(uint256,(address,uint8,uint32)[])\":{\"notice\":\"Adds accounting contexts for a project to this terminal so the project can begin accepting the tokens in those contexts.\"},\"addToBalanceOf(uint256,address,uint256,bool,string,bytes)\":{\"notice\":\"Adds funds to a project's balance without minting tokens.\"},\"cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)\":{\"notice\":\"Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook.\"},\"currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the total current surplus amount in this terminal for a project, in terms of a given currency.\"},\"executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)\":{\"notice\":\"Executes a payout to a split.\"},\"executeProcessFee(uint256,address,uint256,address,address)\":{\"notice\":\"Process a specified amount of fees for a project.\"},\"executeTransferTo(address,address,uint256)\":{\"notice\":\"Transfer funds to an address.\"},\"heldFeesOf(uint256,address,uint256)\":{\"notice\":\"Fees that are being held for a project.\"},\"migrateBalanceOf(uint256,address,address)\":{\"notice\":\"Migrate a project's funds and operations to a new terminal that accepts the same token type.\"},\"pay(uint256,address,uint256,address,uint256,string,bytes)\":{\"notice\":\"Pay a project with tokens.\"},\"processHeldFeesOf(uint256,address,uint256)\":{\"notice\":\"Process any fees that are being held for the project.\"},\"sendPayoutsOf(uint256,address,uint256,uint256,uint256)\":{\"notice\":\"Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"useAllowanceOf(uint256,address,uint256,uint256,uint256,address,address,string)\":{\"notice\":\"Allows a project to pay out funds from its surplus up to the current surplus allowance.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBMultiTerminal.sol\":\"JBMultiTerminal\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/metatx/ERC2771Context.sol\":{\"keccak256\":\"0x0b030a33274bde015419d99e54c9164f876a7d10eb590317b79b1d5e4ab23d99\",\"urls\":[\"bzz-raw://68e5f96988198e8efd25ddef0d89750b4daebb7fd1204fa7f5eaccdfcb3398c8\",\"dweb:/ipfs/QmaM6nNkf9UmEtQraopuZamEWCdTWp7GvuN3pjMQrNCHxm\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/IPermit2.sol\":{\"keccak256\":\"0xaa631cc9f53e699301d94233007110a345e6779011def484e8dd97b8fe0af771\",\"urls\":[\"bzz-raw://fc0502cf19c9c18f320a3001201e89e350393b75837f6b7971de18b2de06f30d\",\"dweb:/ipfs/QmT9SfhdJ7VJNNrf94g4H5usyi7ShqWGx7Cqsz9jZTjX96\"],\"license\":\"MIT\"},\"node_modules/@uniswap/permit2/src/interfaces/ISignatureTransfer.sol\":{\"keccak256\":\"0xe6df9966f8841dc3958ee86169c89de97e7f614c81c28b9dc947b12d732df64e\",\"urls\":[\"bzz-raw://3d4eafdee7f48c3be8350a94eb6edd0bfb2af2c105df65787a77174f356c0317\",\"dweb:/ipfs/QmY1j2adeeAhNpn6cUuthemxGCdLXHTfyMh9yTKsY4mZ2d\"],\"license\":\"MIT\"},\"src/JBMultiTerminal.sol\":{\"keccak256\":\"0xbc24f690394a292930a621d67c9d62e5888c68ed6f32cf9889d34a2742112d0e\",\"urls\":[\"bzz-raw://3c22283618b43aa33fb47bdd7031bb538c3e07aad70d7a36a954bb2ba55d4f6f\",\"dweb:/ipfs/QmeV23MDrmFdYYdLybvvpjK3bqbDyu8mAR3yZZQEiwuecc\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutTerminal.sol\":{\"keccak256\":\"0xac8ed1afe397bb4c4060d947ec5765cf600cefb6d10829157153f0a4324807ea\",\"urls\":[\"bzz-raw://6be3361a27a1944853407d61f33813b21403a63e0d4113c7b7e84ce3b87f5d61\",\"dweb:/ipfs/QmdFTXKU1j4gdFL6nNx1LTTtbgoaRgdnwyVJ7UaQDp9Uo1\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeeTerminal.sol\":{\"keccak256\":\"0x6a71d83541ad900500674f70678c3287f1be3e5432134d16df3c65d97bbaf9e1\",\"urls\":[\"bzz-raw://73fa45b855b288827b211ed50fefaba35da66586544e6188a206f07feed099de\",\"dweb:/ipfs/QmQzUqTXAA3PF2jdyVQ4Pinfegmvc947iL4ATCLU59XwGH\"],\"license\":\"MIT\"},\"src/interfaces/IJBFeelessAddresses.sol\":{\"keccak256\":\"0xef03dc44a8982565006a248eff7d9d4dbf444876f53eb4ce29bc42817ca6b017\",\"urls\":[\"bzz-raw://abd1da6f0d18c8bef8b64b46ef1155a20b4c4bd96046b71d60228bac7bab23c5\",\"dweb:/ipfs/QmPxoejgu1b8VMC8hCn2k4XgoM8SqyYBCT3bqMaWF1ikpf\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBMultiTerminal.sol\":{\"keccak256\":\"0x5d4bb096842b1e06e65fb4299d1a9162e82d397a67a9b742aeb445f8fbfd8829\",\"urls\":[\"bzz-raw://5d7648a498111cfc879f00cb073c5077b648530d55ca2298f9bcf7514bff5f4a\",\"dweb:/ipfs/QmUt9XWSbWia6m99Xbr3UDoKY79ptujw6YmhqbYTcfqau4\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayoutTerminal.sol\":{\"keccak256\":\"0x025153918d26744dc4c6ffcdf8b009fb294f3815a73740704f8686eb594d530f\",\"urls\":[\"bzz-raw://aea589b93c57b4b9e781dd76f37897c1dbddc0d4b289801571ba10f21c19b9f9\",\"dweb:/ipfs/Qma7bvMtB7SQHb6qUit2o9KP5H46ctimXUsZXnoYKJcWdK\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermitTerminal.sol\":{\"keccak256\":\"0xd6bd30842273f5b794f82219fefdd4953f5343328d2cfdb684b7d826cc0c769c\",\"urls\":[\"bzz-raw://ca1195fd5572060b36fc7e45f46d59f974e3a908248edcfadeb8cb06247075f0\",\"dweb:/ipfs/QmYTpDXKTXqi8GQFsNqB8LiGFTZjSPY3PA8vKqZBraVdqD\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFees.sol\":{\"keccak256\":\"0xd1491c7266f8a6944615a940c686d5ce8f8a51651cbaabece1e0a38154901028\",\"urls\":[\"bzz-raw://89d3d4424cf80e5b1a3dec3b23f6606b937c73c1160d0dc9eb8ddc7951293949\",\"dweb:/ipfs/QmRo7WCrTRkoCwj5FZ3G9CuxLM9a18Kh9tgs3rAnnKABAv\"],\"license\":\"MIT\"},\"src/libraries/JBMetadataResolver.sol\":{\"keccak256\":\"0x52402cc945b1a23d0560a2a9c93a11271ce0ab18e592a4d78fc449a8b417526d\",\"urls\":[\"bzz-raw://912b5056f5768b14f26e4e2a754b90ce631a1f4898af6883f6d1e4a1f4ce87c8\",\"dweb:/ipfs/QmdnGcjTQtxscD1QDTERN2xqVA6iJnLCkfq1vWSUmDYYtX\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFee.sol\":{\"keccak256\":\"0xffacd6dcce11a5cdd54aba7a5d8f9b28b9b36b87771dea746a117b616519bbd0\",\"urls\":[\"bzz-raw://c278d6efa1dd694c8aceba43b2cb3f2b49a52d9b15fc23089def526e4ba23778\",\"dweb:/ipfs/QmVHEGGAfsUVE791aGeYZBiymU6aJ278PoGmH9SRLY1U4N\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSingleAllowance.sol\":{\"keccak256\":\"0x8782e1148524829a4f154442744c25963d0faba623c8a9583eaa8bc2290a040d\",\"urls\":[\"bzz-raw://948696535a97640649fa3f44ea176c9d84066c28a303118d0440b6eac830b22f\",\"dweb:/ipfs/QmSGNC6W38F2XvLcqodgx792azsN8D1dt5LSUhS2vGhxZT\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", - "0xf36a63951A49a9708f007F23B077751be80fFE11", + "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", + "0x270eC8711dCa04cf5f3FdF10141428065e07194F", + "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "0x000000000022D473030F116dDEE9F6B43aC78BA3", "0xB2b5841DBeF766d4b521221732F9B618fCf34A87" ], - "bytecode": "0x6101a06040523480156200001257600080fd5b50604051620062ad380380620062ad833981016040819052620000359162000176565b6001600160a01b0380871660805280821660a052604080516388bc2ef360e01b81529051918516916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af919062000221565b6001600160a01b0390811660c05287811660e052858116610120526040805163d4a1b4b160e01b815290519185169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000130919062000221565b6001600160a01b039081166101405293841661016052509082166101805216610100525062000248915050565b6001600160a01b03811681146200017357600080fd5b50565b600080600080600080600060e0888a0312156200019257600080fd5b87516200019f816200015d565b6020890151909750620001b2816200015d565b6040890151909650620001c5816200015d565b6060890151909550620001d8816200015d565b6080890151909450620001eb816200015d565b60a0890151909350620001fe816200015d565b60c089015190925062000211816200015d565b8091505092959891949750929550565b6000602082840312156200023457600080fd5b815162000241816200015d565b9392505050565b60805160a05160c05160e0516101005161012051610140516101605161018051615f3e6200036f6000396000818161035c015281816115a1015281816117bc015281816122450152818161269d0152818161281901528181612aba01528181612e9d0152818161348e01526144dc0152600081816101cd0152613f2f0152600081816105c1015261080f01526000818161023b01528181610757015281816113720152818161168801528181612b6c0152612c0001526000818161047e01528181611e48015261254801526000818161044a0152611ab701526000818161050501528181610f81015281816119fd01528181611f9a01526136a20152600081816103c8015281816104cf015261307c01526000818161061501526121600152615f3e6000f3fe6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f000000000000000000000000000000000000000000000000000000000000000081565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", - "deployedBytecode": "0x6080604052600436106101815760003560e01c80636afdd850116100d1578063c57981b51161008a578063d4a1b4b111610064578063d4a1b4b1146105af578063e28b5411146105e3578063f434c91414610603578063fef432571461063757600080fd5b8063c57981b51461055a578063cc6801271461056f578063cfaf58391461058f57600080fd5b80636afdd8501461046c578063748e821c146104a05780637da0a877146104c057806388bc2ef3146104f35780639e6eec0514610527578063bb7214fe1461053a57600080fd5b80634ff513ab1161013e578063572b6c0511610118578063572b6c05146103ab5780635f912e56146103f857806362ef303614610418578063659a20471461043857600080fd5b80634ff513ab1461031c578063507f14651461034a578063515a92931461037e57600080fd5b806301ffc9a7146101865780631f47ce69146101bb578063253721c814610207578063293c49991461022957806333b306101461025d5780633a01714f1461028a575b600080fd5b34801561019257600080fd5b506101a66101a1366004614792565b61064a565b60405190151581526020015b60405180910390f35b3480156101c757600080fd5b506101ef7f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe81565b6040516001600160a01b0390911681526020016101b2565b34801561021357600080fd5b506102276102223660046147bc565b61073d565b005b34801561023557600080fd5b506101ef7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b34801561026957600080fd5b5061027d61027836600461484f565b610c8b565b6040516101b2919061487f565b34801561029657600080fd5b5061030f6102a536600461484f565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101b29190614914565b34801561032857600080fd5b5061033c610337366004614922565b610d35565b6040519081526020016101b2565b34801561035657600080fd5b506101ef7f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1181565b34801561038a57600080fd5b5061039e61039936600461498a565b611218565b6040516101b291906149e9565b3480156103b757600080fd5b506101a66103c63660046149fc565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561040457600080fd5b50610227610413366004614a19565b6112b2565b34801561042457600080fd5b5061022761043336600461484f565b61133d565b34801561044457600080fd5b506101ef7f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb01081565b34801561047857600080fd5b506101ef7f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b3480156104ac57600080fd5b5061033c6104bb366004614aab565b61134d565b3480156104cc57600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876101ef565b3480156104ff57600080fd5b506101ef7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b610227610535366004614b5d565b611464565b34801561054657600080fd5b5061033c610555366004614c04565b6114f1565b34801561056657600080fd5b5061033c601981565b34801561057b57600080fd5b5061033c61058a366004614c87565b61157c565b34801561059b57600080fd5b5061033c6105aa366004614cb3565b611628565b3480156105bb57600080fd5b506101ef7f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b3480156105ef57600080fd5b5061033c6105fe366004614cfb565b611663565b34801561060f57600080fd5b506101ef7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b61033c610645366004614d3d565b61192a565b60006001600160e01b03198216633a1909d760e01b148061067b57506001600160e01b03198216633d0d324560e21b145b8061069557506001600160e01b031982166201549760e41b145b806106b057506001600160e01b03198216635db90a7f60e11b145b806106cb57506001600160e01b0319821663bb21da2560e01b145b806106e657506001600160e01b031982166306afdd8560e41b145b8061070157506001600160e01b03198216633a1909d760e01b145b8061071c57506001600160e01b03198216633c6fe5f560e21b145b8061073757506001600160e01b031982166301ffc9a760e01b145b92915050565b6040516331a9108f60e11b8152600481018490526107f6907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190614dd9565b8460136107d6826119e4565b6001600160a01b03166107e7611a70565b6001600160a01b031614611a7f565b6040516321d1336160e11b8152600481018490526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561085f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108839190614fdf565b9050806020015165ffffffffffff166000141580156108ae5750610100810151604b1c600190811614155b156108cc576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610c845760008484838181106108eb576108eb614ffc565b9050606002018036038101906109019190615021565b60008781526020818152604080832084516001600160a01b0390811685529252909120805492935091161561095c5780546040516307295c0160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b81516000906001600160a01b031661eeee1480156109825750826020015160ff16601214155b1561098f57506001610a99565b82516001600160a01b031661eeee14610a995782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610a0c575060408051601f3d908101601f19168201909252610a0991810190615075565b60015b15610a9957808015610a8d575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7f9190615092565b60ff16846020015160ff1614155b15610a9757600191505b505b8015610ab85760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610ae357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610c63611a70565b604051610c719291906150da565b60405180910390a25050506001016108cf565b5050505050565b60008281526002602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b82821015610d295760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101610cca565b50505050905092915050565b6000333014610d4357600080fd5b50816000610d5760c0880160a089016149fc565b6001600160a01b031614610f5757610d7560c0870160a088016149fc565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de59190615075565b610e1e57610df960c0870160a088016149fc565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610953565b610e36610e3160c0880160a089016149fc565b611a95565b610e5257610e45836019611b24565b610e4f9082615116565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a08101610eb6368a90038a018a61513e565b90529050610ed4610ecd60c0890160a08a016149fc565b8684611b46565b6000610ee08684611b77565b9050610ef260c0890160a08a016149fc565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b8152600401610f1e919061522a565b6000604051808303818588803b158015610f3757600080fd5b505af1158015610f4b573d6000803e3d6000fd5b5050505050505061120f565b610f67606087016040880161527e565b66ffffffffffffff16156111a35760006001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22166386202650610fb660608a0160408b0161527e565b6040516001600160e01b031960e084901b16815266ffffffffffffff90911660048201526001600160a01b0388166024820152604401602060405180830381865afa158015611009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102d9190614dd9565b90506001600160a01b0381166110815761104d606088016040890161527e565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610953565b6001600160a01b03811630148015906110a0575061109e81611a95565b155b156110bd576110b0846019611b24565b6110ba9083615116565b91505b6001600160a01b03811630146110d8576110d8818684611b46565b6000866040516020016110ed91815260200190565b60408051601f19818403018152919052905061110c602089018961529b565b1561113b576111368261112560608b0160408c0161527e565b66ffffffffffffff16888685611b98565b61119c565b60008061114e60808b0160608c016149fc565b6001600160a01b0316036111625784611172565b61117260808a0160608b016149fc565b905061119a8361118860608c0160408d0161527e565b66ffffffffffffff1689878587611c49565b505b505061120f565b6000806111b66080890160608a016149fc565b6001600160a01b0316036111ca57826111da565b6111da60808801606089016149fc565b90506111e581611a95565b611201576111f4846019611b24565b6111fe9083615116565b91505b61120d30828785611d06565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156112a757600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161124d565b505050509050919050565b3330146112be57600080fd5b6001600160a01b0381166112e557604051630692dd3560e01b815260040160405180910390fd5b6001600160a01b038116301461130057611300818585611b46565b60008560405160200161131591815260200190565b604051602081830303815290604052905061133582600187878786611c49565b505050505050565b61134982826000611ea0565b5050565b6040516331a9108f60e11b8152600481018a90526000906113e5906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156113b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113dd9190614dd9565b8b60106120f4565b61142a8a8a8a8a898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220c92505050565b905085811015611457576040516332eb01cf60e21b81526004810182905260248101879052604401610953565b9998505050505050505050565b6114e788886114768b8b8b8888612394565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a915089908190840183828082843760009201919091525061263192505050565b5050505050505050565b60006114ff898960036120f4565b611543898989898888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271c92505050565b905084811015611570576040516353004fd560e01b81526004810182905260248101869052604401610953565b98975050505050505050565b600083815260016020526040808220905163d60d1a0960e01b81526001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11169163d60d1a09916115dd913091899190899089906004016152b8565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190615329565b90505b9392505050565b600061163686868686612a80565b90508181101561120f576040516332eb01cf60e21b81526004810182905260248101839052604401610953565b6040516331a9108f60e11b8152600481018490526000906116fb906001600160a01b037f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc841690636352211e90602401602060405180830381865afa1580156116cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f39190614dd9565b8560056120f4565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa158015611748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176c9190615342565b6040015163ffffffff166000036117965760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906319781e23906044016020604051808303816000875af1158015611805573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118299190615329565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f68461186a611a70565b604080519283526001600160a01b0390911660208301520160405180910390a4801561191e5761189b828483611b46565b60006118a78483611b77565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec059285926118ea928b928b928a926004016153da565b6000604051808303818588803b15801561190357600080fd5b505af1158015611917573d6000803e3d6000fd5b5050505050505b61162184846001611ea0565b60006119b78a8a61193e8d8d8d8989612394565b611946611a70565b8b8a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250612d7f92505050565b9050858110156114575760405163c3de539b60e01b81526004810182905260248101879052604401610953565b604051632eec7b5560e11b8152600481018290526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611a4c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190614dd9565b6000611a7a61306c565b905090565b80611a8f57611a8f8484846120f4565b50505050565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000c1490c2759eda9afde3e6babf66367407f2cb0109091169063ae74a1b590602401602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190615075565b6000611b3c836103e8611b378186615428565b6130e1565b6116219084615116565b61eeed196001600160a01b03831601611b5e57505050565b611b726001600160a01b03831684836131b5565b505050565b60006001600160a01b03831661eeee14611b92576000611621565b50919050565b306001600160a01b03861603611bcb57611bc684848460006040518060200160405280600081525086612631565b610c84565b6000611bd78484611b77565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401611c0f9594939291906153da565b6000604051808303818588803b158015611c2857600080fd5b505af1158015611c3c573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b03871603611c7d57611c7785858530866040518060200160405280600081525087612d7f565b50611335565b6000611c898585611b77565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b8152600401611cc39695949392919061543b565b60206040518083038185885af1158015611ce1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114e79190615329565b61eeed196001600160a01b03831601611d2857611d23838261323f565b611a8f565b306001600160a01b03851603611d4c57611d236001600160a01b03831684836132d6565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa158015611d9b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbf9190615329565b10611dd957611d236001600160a01b038316858584613335565b6001600160a01b03811115611e1157604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610953565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b158015611e8c57600080fd5b505af11580156114e7573d6000803e3d6000fd5b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083529192909190849084015b82821015611f3c5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff16918301919091529083529092019101611edd565b50505060008681526002602090815260408083206001600160a01b03891684529091528120929350611f6f9291506146fa565b8051604051630862026560e41b8152600160048201526001600160a01b0385811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa158015611fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120079190614dd9565b905060005b828110156120eb57600084828151811061202857612028614ffc565b602002602001015190508515801561204b575042816040015165ffffffffffff16115b156120ca5760008881526002602081815260408084206001600160a01b03808d1686529083528185208054600181810183559187529584902087519690950290940194855591850151939092018054949092015165ffffffffffff16600160a01b026001600160d01b03199094169216919091179190911790556120e3565b6120e188888360000151846020015187600161336e565b505b60010161200c565b50505050505050565b60006120fe611a70565b9050836001600160a01b0316816001600160a01b0316141580156121cd5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe5169063348b684e9060c401602060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190615075565b155b15611a8f57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610953565b600061221661471b565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11909216916330795ef891612281918e91908d908d90600401615487565b610140604051808303816000875af11580156122a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c591906154ad565b90925090506122d5610e31611a70565b612301576122fc8a8a83886122f78761010001516001604f9190911c81161490565b613559565b612304565b60005b61230e9082615116565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61235a611a70565b60405161236d97969594939291906154dc565b60405180910390a482156123875761238730878b86611d06565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166123de5760405163765b60eb60e11b81526001600160a01b0386166004820152602401610953565b61eeed196001600160a01b038616016123f857503461120f565b341561241957604051633ad385fd60e01b8152346004820152602401610953565b600080612483612447604051806040016040528060078152602001663832b936b4ba1960c91b815250613720565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061373492505050565b9150915081156125fd576000818060200190518101906124a39190615592565b905080602001516001600160a01b03168711156124eb5760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610953565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612575611a70565b8385608001516040518463ffffffff1660e01b815260040161259993929190615641565b600060405180830381600087803b1580156125b357600080fd5b505af19250505080156125c4575060015b6125fa573d8080156125f2576040519150601f19603f3d011682016040523d82523d6000602084013e6125f7565b606091505b50505b50505b6000612608886138da565b905061261d612615611a70565b308a8a611d06565b80612627896138da565b6114579190615116565b60008361263f57600061264a565b61264a878787613962565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db2538683868661267a611a70565b60405161268b9594939291906156b5565b60405180910390a26001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe11166351fc173588886126ce858a615428565b6040516001600160e01b031960e086901b16815260048101939093526001600160a01b0390911660248301526044820152606401600060405180830381600087803b158015611c2857600080fd5b600061272661471b565b6000878152602081815260408083206001600160a01b038a8116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b828210156127fc57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016127a2565b5050604051630d346b8160e01b8152929350506001600160a01b037f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe111691630d346b819150612859908f908f908e90889088908f90600401615701565b6000604051808303816000875af1158015612878573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526128a09190810190615776565b91985091965094509250508715612934576128ba8a6119e4565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018b90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b15801561291b57600080fd5b505af115801561292f573d6000803e3d6000fd5b505050505b6000851561298f5761294588611a95565b15801561295457506127108314155b1561297d576129638682615428565b9050612970866019611b24565b61297a9087615116565b95505b851561298f5761298f30898c89611d06565b8351156129ee576129e18b60405180608001604052808d6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8c8b8a898f8c613c9c565b6129eb9082615428565b90505b806000036129fd576000612a0b565b612a0b8b8b838b6000613559565b508a856000015165ffffffffffff16866020015165ffffffffffff167f9565fc8bdd4f45a73582d1163dbe522a4fb0c4dbb882b5e66269f70101a2509a8f8c8e898d8f612a56611a70565b604051612a6997969594939291906154dc565b60405180910390a450505050509695505050505050565b6000612a8a61471b565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe119091169163c0920f3891612af5918a9189908990600401615487565b610140604051808303816000875af1158015612b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3991906154ad565b610100820151909350909150604e1c600190811603612be7576040516331a9108f60e11b815260048101879052612be7907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190614dd9565b8760046120f4565b6040516331a9108f60e11b8152600481018790526000907f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc846001600160a01b031690636352211e90602401602060405180830381865afa158015612c4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c739190614dd9565b9050600080612c908989866020015165ffffffffffff1688613ef5565b90925090506000612cbc8a8a612ca68686615428565b6101008901518890604f1c600190811614613559565b905060008315612ce957612cd1846019611b24565b612cdb9085615116565b9050612ce930868c84611d06565b8a866000015165ffffffffffff16876020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea888d8c8888612d32611a70565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a4505050505050949350505050565b604080516080810182526000808252602082018190529181018290526060810182905260008060008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905060405180608001604052808a6001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018981525091505060008060007f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe116001600160a01b031663c59dfadb8a868f8c8b6040518663ffffffff1660e01b8152600401612eef9594939291906158dc565b6000604051808303816000875af1158015612f0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f36919081019061591e565b92509250925081600014612fe157612f4d8c6119e4565b6040516363fdc96f60e11b8152600481018e9052602481018490526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015612fba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fde9190615329565b94505b8b836000015165ffffffffffff16846020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f8b8e8e61302b611a70565b60405161303e9796959493929190615a3d565b60405180910390a480511561305d5761305d8c82868c878d8b8d61409c565b50505050979650505050505050565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156130a95750808210155b156130d9576000366130bb8385615116565b6130c6928290615a9d565b6130cf91615ac7565b60601c9250505090565b339250505090565b600080806000198587098587029250828110838203039150508060000361311b5783828161311157613111615afc565b0492505050611621565b83811061314c57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610953565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015613205573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132299190615329565b9050611a8f848461323a8585615428565b614283565b804710156132625760405163cd78605960e01b8152306004820152602401610953565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132af576040519150601f19603f3d011682016040523d82523d6000602084013e6132b4565b606091505b5050905080611b7257604051630a12f52160e11b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611b7291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061430f565b6040516001600160a01b038481166024830152838116604483015260648201839052611a8f9186918216906323b872dd90608401613303565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b1580156133cd57600080fd5b505af19250505080156133de575060015b6134f0573d80801561340c576040519150601f19603f3d011682016040523d82523d6000602084013e613411565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a888561344a611a70565b60405161345993929190615b12565b60405180910390a46040516351fc173560e01b8152600481018890526001600160a01b038781166024830152604482018790527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b1580156134d257600080fd5b505af11580156134e6573d6000803e3d6000fd5b5050505050611335565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487613527611a70565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b6000613566846019611b24565b905081156136795760008681526002602090815260408083206001600160a01b03808a1685529083529281902081516060810183528881529387169284019290925290919081016135ba6224ea0042615428565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761364c611a70565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461120f565b604051630862026560e41b8152600160048201526001600160a01b0386811660248301526000917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2290911690638620265090604401602060405180830381865afa1580156136eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370f9190614dd9565b905061120d8787848785600061336e565b805160208201206000903060601b18610737565b60006060602583511161375957505060408051602081019091526000808252906138d3565b60008361376860046020615428565b8151811061377857613778614ffc565b0160209081015160f81c91505b600085613793600484615428565b815181106137a3576137a3614ffc565b01602001516001600160f81b031916148015906137c957506137c6602083615b43565b81105b156138d0576000856137dc600484615428565b815181106137ec576137ec614ffc565b016020908101518784019091015160f89190911c91506001600160e01b0319808916908216036138c6576000613823602086615b43565b61382e600986615428565b101580613863575087613842600986615428565b8151811061385257613852614ffc565b01602001516001600160f81b031916155b61389c57602088613875600987615428565b8151811061388557613885614ffc565b0160200151613897919060f81c615b43565b61389f565b87515b905060016138b8896138b2602087615b43565b84614372565b9650965050505050506138d3565b5050600501613785565b50505b9250929050565b60006001600160a01b03821661eeee1461395b576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139569190615329565b610737565b4792915050565b60008381526002602090815260408083206001600160a01b0386168452825280832080548251818502810185019093528083528493849084015b828210156139fb5760008481526020908190206040805160608101825260028602909201805483526001908101546001600160a01b03811684860152600160a01b900465ffffffffffff1691830191909152908352909201910161399c565b50505060008781526002602090815260408083206001600160a01b038a1684529091528120929350613a2e9291506146fa565b8051839060005b81811015613c33576000848281518110613a5157613a51614ffc565b6020026020010151905083600003613adb5760008981526002602081815260408084206001600160a01b03808e16865290835281852080546001818101835591875295849020875196909502909401948555918501519390920180549285015165ffffffffffff16600160a01b026001600160d01b03199093169390911692909217179055613c2a565b6000613aec82600001516019611b24565b90506000818360000151613b009190615116565b9050808610613b1757968101969485900394613c27565b613b228660196143b8565b9150600260008c815260200190815260200160002060008b6001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405280888403815260200185602001516001600160a01b03168152602001856040015165ffffffffffff1681525090806001815401808255809150506001900390600052602060002090600202016000909190919091506000820151816000015560208201518160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160146101000a81548165ffffffffffff021916908365ffffffffffff16021790555050508188019750600095505b50505b50600101613a35565b5084866001600160a01b0316887fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8786613c6b611a70565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a45050509392505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060008351905060005b81811015613ee5576000858281518110613d3957613d39614ffc565b602002602001015190506000613d528260000151611a95565b613d6a57613d6582602001516019611b24565b613d6d565b60005b90508015613d9c576020820151613d849087615428565b95508082602001818151613d989190615116565b9052505b60405180608001604052808f600001516001600160a01b031681526020018f6020015160ff1681526020018f6040015163ffffffff16815260200183602001518152508560a001819052508160400151856101000181905250613e0c82600001518f600001518460200151611b46565b6000613e208f600001518460200151611b77565b8351604051631727f03960e01b81529192506001600160a01b031690631727f039908390613e52908a90600401615c05565b6000604051808303818588803b158015613e6b57600080fd5b505af1158015613e7f573d6000803e3d6000fd5b505050505082600001516001600160a01b03167f3dc4bcf15d77035ba58aff65ebae2b29daccddfc22b9dcf03638e3f727577b0587856020015185613ec2611a70565b604051613ed29493929190615c18565b60405180910390a2505050600101613d1d565b5050509998505050505050505050565b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f0000000000000000000000000eecf21dfc9265e25b81f384993a40e351f897fe16906369e11cc590606401600060405180830381865afa158015613f76573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f9e9190810190615c50565b805190915060005b8181101561408c576000838281518110613fc257613fc2614ffc565b602002602001015190506000613fe389836020015163ffffffff16886130e1565b90506000613ff3838e8e856143c7565b905080158015906140045750818114155b15614016576140138289615428565b97505b811561402257818a0399505b826020015163ffffffff16870396508b6001600160a01b03168b8e7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f6868686614069611a70565b6040516140799493929190615d61565b60405180910390a4505050600101613fa6565b5085945050505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060008851905060005b81811015611c3c5760008a828151811061414557614145614ffc565b60209081029190910181015160408051608080820183528e516001600160a01b031682528e85015160ff16828601528e83015163ffffffff1682840152938301805160608301529388015281015161010087015280518c5192519193506141ad929091611b46565b60006141c18b600001518360200151611b77565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f9869083906141f3908990600401615e25565b6000604051808303818588803b15801561420c57600080fd5b505af1158015614220573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c0868460200151614262611a70565b60405161427193929190615e38565b60405180910390a25050600101614129565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526142d4848261454d565b611a8f576040516001600160a01b0384811660248301526000604483015261430991869182169063095ea7b390606401613303565b611a8f84825b60006143246001600160a01b038416836145f0565b905080516000141580156143495750808060200190518101906143479190615075565b155b15611b7257604051635274afe760e01b81526001600160a01b0384166004820152602401610953565b60608282036040519150602081830101604052808252508260208501016020820160005b848110156143ae578281015182820152602001614396565b5050509392505050565b600061162183836103e86130e1565b600030634ff513ab868686866143db611a70565b6040518663ffffffff1660e01b81526004016143fb959493929190615e6b565b6020604051808303816000875af1925050508015614436575060408051601f3d908101601f1916820190925261443391810190615329565b60015b614542573d808015614464576040519150601f19603f3d011682016040523d82523d6000602084013e614469565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb878584614497611a70565b6040516144a79493929190615eaa565b60405180910390a26040516351fc173560e01b8152600481018690526001600160a01b038581166024830152604482018590527f000000000000000000000000f36a63951a49a9708f007f23b077751be80ffe1116906351fc173590606401600060405180830381600087803b15801561452057600080fd5b505af1158015614534573d6000803e3d6000fd5b505050506000915050614545565b90505b949350505050565b6000806000846001600160a01b03168460405161456a9190615eec565b6000604051808303816000865af19150503d80600081146145a7576040519150601f19603f3d011682016040523d82523d6000602084013e6145ac565b606091505b50915091508180156145d65750805115806145d65750808060200190518101906145d69190615075565b801561120f5750505050506001600160a01b03163b151590565b60606116218383600084600080856001600160a01b031684866040516146169190615eec565b60006040518083038185875af1925050503d8060008114614653576040519150601f19603f3d011682016040523d82523d6000602084013e614658565b606091505b5091509150614668868383614672565b9695505050505050565b60608261468757614682826146ce565b611621565b815115801561469e57506001600160a01b0384163b155b156146c757604051639996b31560e01b81526001600160a01b0385166004820152602401610953565b5080611621565b8051156146de5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b50805460008255600202906000526020600020908101906146f79190614767565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b5b8082111561478e57600081556001810180546001600160d01b0319169055600201614768565b5090565b6000602082840312156147a457600080fd5b81356001600160e01b03198116811461162157600080fd5b6000806000604084860312156147d157600080fd5b8335925060208401356001600160401b03808211156147ef57600080fd5b818601915086601f83011261480357600080fd5b81358181111561481257600080fd5b87602060608302850101111561482757600080fd5b6020830194508093505050509250925092565b6001600160a01b03811681146146f757600080fd5b6000806040838503121561486257600080fd5b8235915060208301356148748161483a565b809150509250929050565b602080825282518282018190526000919060409081850190868401855b828110156148dc57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161489c565b5091979650505050505050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b6060810161073782846148e9565b600080600080600085870361014081121561493c57600080fd5b60c081121561494a57600080fd5b5085945060c0860135935060e08601356149638161483a565b9250610100860135915061012086013561497c8161483a565b809150509295509295909350565b60006020828403121561499c57600080fd5b5035919050565b60008151808452602080850194506020840160005b838110156149de576149cb8783516148e9565b60609690960195908201906001016149b8565b509495945050505050565b60208152600061162160208301846149a3565b600060208284031215614a0e57600080fd5b81356116218161483a565b600080600080600060a08688031215614a3157600080fd5b853594506020860135614a438161483a565b9350604086013592506060860135614a5a8161483a565b9150608086013561497c8161483a565b60008083601f840112614a7c57600080fd5b5081356001600160401b03811115614a9357600080fd5b6020830191508360208285010111156138d357600080fd5b60008060008060008060008060006101008a8c031215614aca57600080fd5b8935985060208a0135614adc8161483a565b975060408a0135965060608a0135955060808a0135945060a08a0135614b018161483a565b935060c08a0135614b118161483a565b925060e08a01356001600160401b03811115614b2c57600080fd5b614b388c828d01614a6a565b915080935050809150509295985092959850929598565b80151581146146f757600080fd5b60008060008060008060008060c0898b031215614b7957600080fd5b883597506020890135614b8b8161483a565b9650604089013595506060890135614ba281614b4f565b945060808901356001600160401b0380821115614bbe57600080fd5b614bca8c838d01614a6a565b909650945060a08b0135915080821115614be357600080fd5b50614bf08b828c01614a6a565b999c989b5096995094979396929594505050565b60008060008060008060008060e0898b031215614c2057600080fd5b8835614c2b8161483a565b9750602089013596506040890135614c428161483a565b9550606089013594506080890135935060a0890135614c608161483a565b925060c08901356001600160401b03811115614c7b57600080fd5b614bf08b828c01614a6a565b600080600060608486031215614c9c57600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ccb57600080fd5b853594506020860135614cdd8161483a565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614d1057600080fd5b833592506020840135614d228161483a565b91506040840135614d328161483a565b809150509250925092565b600080600080600080600080600060e08a8c031215614d5b57600080fd5b8935985060208a0135614d6d8161483a565b975060408a0135965060608a0135614d848161483a565b955060808a0135945060a08a01356001600160401b0380821115614da757600080fd5b614db38d838e01614a6a565b909650945060c08c0135915080821115614dcc57600080fd5b50614b388c828d01614a6a565b600060208284031215614deb57600080fd5b81516116218161483a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715614e2f57614e2f614df6565b60405290565b604051606081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160c081016001600160401b0381118282101715614e2f57614e2f614df6565b60405160a081016001600160401b0381118282101715614e2f57614e2f614df6565b604051601f8201601f191681016001600160401b0381118282101715614ec357614ec3614df6565b604052919050565b65ffffffffffff811681146146f757600080fd5b8051614eea81614ecb565b919050565b63ffffffff811681146146f757600080fd5b8051614eea81614eef565b80516001600160701b0381168114614eea57600080fd5b8051614eea8161483a565b60006101208284031215614f4157600080fd5b614f49614e0c565b9050614f5482614edf565b8152614f6260208301614edf565b6020820152614f7360408301614edf565b6040820152614f8460608301614edf565b6060820152614f9560808301614f01565b6080820152614fa660a08301614f0c565b60a0820152614fb760c08301614f01565b60c0820152614fc860e08301614f23565b60e082015261010080830151818301525092915050565b60006101208284031215614ff257600080fd5b6116218383614f2e565b634e487b7160e01b600052603260045260246000fd5b60ff811681146146f757600080fd5b60006060828403121561503357600080fd5b61503b614e35565b82356150468161483a565b8152602083013561505681615012565b6020820152604083013561506981614eef565b60408201529392505050565b60006020828403121561508757600080fd5b815161162181614b4f565b6000602082840312156150a457600080fd5b815161162181615012565b546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608081016150e882856150af565b6001600160a01b039290921660609190910152919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561073757610737615100565b66ffffffffffffff811681146146f757600080fd5b600060c0828403121561515057600080fd5b615158614e57565b823561516381614b4f565b8152602083013561517381614eef565b6020820152604083013561518681615129565b604082015260608301356151998161483a565b606082015260808301356151ac81614ecb565b608082015260a08301356151bf8161483a565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615277908401826151cb565b5092915050565b60006020828403121561529057600080fd5b813561162181615129565b6000602082840312156152ad57600080fd5b813561162181614b4f565b6001600160a01b0386168152602080820186905260a060408301819052855490830181905260008681529182209060c0840190835b81811015615312576152ff83856150af565b60019384019360609390930192016152ed565b505060608401959095525050608001529392505050565b60006020828403121561533b57600080fd5b5051919050565b60006060828403121561535457600080fd5b61535c614e35565b82516153678161483a565b8152602083015161537781615012565b6020820152604083015161506981614eef565b60005b838110156153a557818101518382015260200161538d565b50506000910152565b600081518084526153c681602086016020860161538a565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061541d60e08301846153ae565b979650505050505050565b8082018082111561073757610737615100565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c0840152611457818401856153ae565b84815260c0810161549b60208301866150af565b608082019390935260a0015292915050565b60008061014083850312156154c157600080fd5b6154cb8484614f2e565b915061012083015190509250929050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a084015261551860e08401866153ae565b915080841660c08401525098975050505050505050565b600082601f83011261554057600080fd5b81516001600160401b0381111561555957615559614df6565b61556c601f8201601f1916602001614e9b565b81815284602083860101111561558157600080fd5b61454582602083016020870161538a565b6000602082840312156155a457600080fd5b81516001600160401b03808211156155bb57600080fd5b9083019060a082860312156155cf57600080fd5b6155d7614e79565b8251815260208301516155e98161483a565b602082015260408301516155fc81614ecb565b6040820152606083015161560f81614ecb565b606082015260808301518281111561562657600080fd5b6156328782860161552f565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e0840152614668818401856153ae565b85815284602082015260a0604082015260006156d460a08301866153ae565b82810360608401526156e681866153ae565b91505060018060a01b03831660808301529695505050505050565b6001600160a01b03871681526020810186905260408101859052600061010061572d60608401876148e9565b8060c084015261573f818401866149a3565b905082810360e084015261145781856153ae565b60006001600160401b0382111561576c5761576c614df6565b5060051b60200190565b600080600080610180858703121561578d57600080fd5b6157978686614f2e565b9350610120850151925061014085015191506101608501516001600160401b03808211156157c457600080fd5b818701915087601f8301126157d857600080fd5b81516157eb6157e682615753565b614e9b565b8082825260208201915060208360051b86010192508a83111561580d57600080fd5b602085015b838110156158975780518581111561582957600080fd5b86016060818e03601f1901121561583f57600080fd5b615847614e35565b60208201516158558161483a565b81526040820151602082015260608201518781111561587357600080fd5b6158828f60208386010161552f565b60408301525084525060209283019201615812565b50979a9699509497505050505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906158fd60208501896158a7565b8660a085015280861660c0850152508060e0840152611570818401856153ae565b6000806000610160848603121561593457600080fd5b61593e8585614f2e565b925061012084015191506101408401516001600160401b038082111561596357600080fd5b818601915086601f83011261597757600080fd5b815160206159876157e683615753565b82815260059290921b8401810191818101908a8411156159a657600080fd5b8286015b84811015615a2c578051868111156159c157600080fd5b87016060818e03601f190112156159d757600080fd5b6159df614e35565b858201516159ec8161483a565b8152604082015186820152606082015188811115615a0a5760008081fd5b615a188f888386010161552f565b6040830152508452509183019183016159aa565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e06080840152615a7360e08401876153ae565b83810360a0850152615a8581876153ae565b92505080841660c08401525098975050505050505050565b60008085851115615aad57600080fd5b83861115615aba57600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615af45780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b838152606060208201526000615b2b60608301856153ae565b905060018060a01b0383166040830152949350505050565b808202811582820484141761073757610737615100565b80516001600160a01b0316825260006102006020830151602085015260408301516040850152606083015160608501526080830151615b9c60808601826158a7565b5060a0830151610100615bb1818701836158a7565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615be9828601826153ae565b9150506101208301518482036101e086015261120f82826153ae565b6020815260006116216020830184615b5a565b608081526000615c2b6080830187615b5a565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60006020808385031215615c6357600080fd5b82516001600160401b03811115615c7957600080fd5b8301601f81018513615c8a57600080fd5b8051615c986157e682615753565b81815260c09182028301840191848201919088841115615cb757600080fd5b938501935b83851015615d555780858a031215615cd45760008081fd5b615cdc614e57565b8551615ce781614b4f565b815285870151615cf681614eef565b81880152604086810151615d0981615129565b90820152606086810151615d1c8161483a565b90820152608086810151615d2f81614ecb565b9082015260a086810151615d428161483a565b9082015283529384019391850191615cbc565b50979650505050505050565b6101208101615d7082876151cb565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615dcd60608601826158a7565b506080830151615de060e08601826158a7565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615be9828601826153ae565b6020815260006116216020830184615d95565b606081526000615e4b6060830186615d95565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615e7a82886151cb565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615eb983886151cb565b8560c08401528060e0840152615ed1818401866153ae565b91505060018060a01b03831661010083015295945050505050565b60008251615efe81846020870161538a565b919091019291505056fea26469706673582212202516ee62d3e9799ad18a5e3caf331c6fccaf68c5aaec1e30bf6e53dd8345791664736f6c63430008170033", + "bytecode": "0x6101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", + "deployedBytecode": "0x6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e81565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2581565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f81565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a876001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab881565b3480156104e257600080fd5b506102807f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba381565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87610280565b34801561056957600080fd5b506102807f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e9091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b9169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f1691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f6001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab89091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7590911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba316632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f9091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f6001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f16906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2516906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -2155,6 +2266,21 @@ "token": "The token being added to the balance." } }, + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "details": "Only a token's holder or an operator with the `CASH_OUT_TOKENS` permission from that holder can cash out those tokens.", + "params": { + "beneficiary": "The address to send the cashed out terminal tokens to, and to pass along to the ruleset's data hook and cash out hook if applicable.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account whose tokens are being cashed out.", + "metadata": "Bytes to send along to the emitted event, as well as the data hook and cash out hook if applicable.", + "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the cash out is reverted.", + "projectId": "The ID of the project the project tokens belong to.", + "tokenToReclaim": "The token being reclaimed." + }, + "returns": { + "reclaimAmount": "The amount of terminal tokens that the project tokens were cashed out for, as a fixed point number with 18 decimals." + } + }, "constructor": { "params": { "feelessAddresses": "A contract that stores addresses that shouldn't incur fees when being paid towards or from.", @@ -2166,9 +2292,10 @@ "trustedForwarder": "A trusted forwarder of transactions to this contract." } }, - "currentSurplusOf(uint256,uint256,uint256)": { + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "details": "This total surplus only includes tokens that the project accepts (as returned by `accountingContextsOf(...)`).", "params": { + "accountingContexts": "The accounting contexts to use to calculate the surplus. Pass an empty array to use all of the project's accounting contexts.", "currency": "The currency to express the returned value in terms of.", "decimals": "The number of decimals to include in the fixed point returned value.", "projectId": "The ID of the project to get the current total surplus of." @@ -2199,7 +2326,15 @@ "token": "The token the fee is being paid in." } }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "details": "Only accepts calls from this terminal itself.", + "params": { + "addr": "The address to transfer funds to.", + "amount": "The amount of tokens to transfer.", + "token": "The token to transfer." + } + }, + "heldFeesOf(uint256,address,uint256)": { "details": "Projects can temporarily hold fees and unlock them later by adding funds to the project's balance.Held fees can be processed at any time by this terminal's owner.", "params": { "projectId": "The ID of the project that is holding fees.", @@ -2234,27 +2369,13 @@ "beneficiaryTokenCount": "The number of tokens minted to the beneficiary, as a fixed point number with 18 decimals." } }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "params": { + "count": "The number of fees to process.", "projectId": "The ID of the project to process held fees for.", "token": "The token to process held fees for." } }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "details": "Only a token's holder or an operator with the `REDEEM_TOKENS` permission from that holder can redeem those tokens.", - "params": { - "beneficiary": "The address to send the reclaimed terminal tokens to, and to pass along to the ruleset's data hook and redeem hook if applicable.", - "holder": "The account whose tokens are being redeemed.", - "metadata": "Bytes to send along to the emitted event, as well as the data hook and redeem hook if applicable.", - "minTokensReclaimed": "The minimum number of terminal tokens expected in return, as a fixed point number with the same number of decimals as this terminal. If the amount of tokens minted for the beneficiary would be less than this amount, the redemption is reverted.", - "projectId": "The ID of the project the project tokens belong to.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals.", - "tokenToReclaim": "The token being reclaimed." - }, - "returns": { - "reclaimAmount": "The amount of terminal tokens that the project tokens were redeemed for, as a fixed point number with 18 decimals." - } - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "details": "If the percentages of the splits in the project's payout split group do not add up to 100%, the remainder is sent to the project's owner.Anyone can send payouts on a project's behalf. Projects can include a wildcard split (a split with no `hook`, `projectId`, or `beneficiary`) to send funds to the `_msgSender()` which calls this function. This can be used to incentivize calling this function.payouts sent to addresses which aren't feeless incur the protocol fee.Payouts a projects don't incur fees if its terminal is feeless.", "params": { @@ -2288,7 +2409,7 @@ "currency": "The expected currency of the amount being paid out. Must match the currency of one of the project's current ruleset's surplus allowances.", "feeBeneficiary": "The address to send the tokens resulting from paying the fee.", "memo": "A memo to pass along to the emitted event.", - "minTokensPaidOut": "The minimum number of terminal tokens that should be used from the surplus allowance (including fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", + "minTokensPaidOut": "The minimum number of terminal tokens that should be returned from the surplus allowance (excluding fees), as a fixed point number with 18 decimals. If the amount of surplus used would be less than this amount, the transaction is reverted.", "projectId": "The ID of the project to use the surplus allowance of.", "token": "The token being paid out from the surplus." }, @@ -2329,6 +2450,9 @@ "STORE()": { "notice": "The contract that stores and manages the terminal's data." }, + "TOKENS()": { + "notice": "The contract storing and managing project rulesets." + }, "accountingContextForTokenOf(uint256,address)": { "notice": "A project's accounting context for a token." }, @@ -2341,7 +2465,10 @@ "addToBalanceOf(uint256,address,uint256,bool,string,bytes)": { "notice": "Adds funds to a project's balance without minting tokens." }, - "currentSurplusOf(uint256,uint256,uint256)": { + "cashOutTokensOf(address,uint256,uint256,address,uint256,address,bytes)": { + "notice": "Holders can cash out a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and cash out hook." + }, + "currentSurplusOf(uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the total current surplus amount in this terminal for a project, in terms of a given currency." }, "executePayout((bool,uint32,uint56,address,uint48,address),uint256,address,uint256,address)": { @@ -2350,7 +2477,10 @@ "executeProcessFee(uint256,address,uint256,address,address)": { "notice": "Process a specified amount of fees for a project." }, - "heldFeesOf(uint256,address)": { + "executeTransferTo(address,address,uint256)": { + "notice": "Transfer funds to an address." + }, + "heldFeesOf(uint256,address,uint256)": { "notice": "Fees that are being held for a project." }, "migrateBalanceOf(uint256,address,address)": { @@ -2359,12 +2489,9 @@ "pay(uint256,address,uint256,address,uint256,string,bytes)": { "notice": "Pay a project with tokens." }, - "processHeldFeesOf(uint256,address)": { + "processHeldFeesOf(uint256,address,uint256)": { "notice": "Process any fees that are being held for the project." }, - "redeemTokensOf(address,uint256,address,uint256,uint256,address,bytes)": { - "notice": "Holders can redeem a project's tokens to reclaim some of that project's surplus tokens, or to trigger rules determined by the current ruleset's data hook and redeem hook." - }, "sendPayoutsOf(uint256,address,uint256,uint256,uint256)": { "notice": "Sends payouts to a project's current payout split group, according to its ruleset, up to its current payout limit." }, @@ -2377,7 +2504,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBMultiTerminal.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBPermissions.json b/deployments/nana-core-testnet/sepolia/JBPermissions.json index 8d029f52..d7da589e 100644 --- a/deployments/nana-core-testnet/sepolia/JBPermissions.json +++ b/deployments/nana-core-testnet/sepolia/JBPermissions.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPermissions", - "address": "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", + "address": "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", "abi": [ { "type": "function", @@ -229,335 +229,335 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x089932e597c40f1d0f277f8f2acaef065aebcbe8f69012a471b1ead688ccaa47\",\"urls\":[\"bzz-raw://9d9a0a316265d86299e110d56e3f3a1ea9e685b577ef93d6af778e788c8677bb\",\"dweb:/ipfs/QmcHUMAwfdSQknLvPF5N2jT7RM7NnERK9h3kchw18iQqFB\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissions_PermissionIdOutOfBounds\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPermissions_Unauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"packed\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"OperatorPermissionsSet\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"WILDCARD_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"permissionIds\",\"type\":\"uint256[]\"},{\"internalType\":\"bool\",\"name\":\"includeRoot\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"includeWildcardProjectId\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"hasPermissions\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionsOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"struct JBPermissionsData\",\"name\":\"permissionsData\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"uint8[]\",\"name\":\"permissionIds\",\"type\":\"uint8[]\"}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setPermissionsFor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID. true.\",\"operator\":\"The operator to check.\",\"permissionId\":\"The permission ID to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has the specified permission.\"}},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"params\":{\"account\":\"The account being operated on behalf of.\",\"includeRoot\":\"A flag indicating if the return value should default to true if the operator has the ROOT permission.\",\"includeWildcardProjectId\":\"A flag indicating if the return value should return true if the operator has the specified permission on the wildcard project ID.\",\"operator\":\"The operator to check.\",\"permissionIds\":\"An array of permission IDs to check for.\",\"projectId\":\"The project ID that the operator has permission to operate under. 0 represents all projects.\"},\"returns\":{\"_0\":\"A flag indicating whether the operator has all specified permissions.\"}},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"details\":\"Only an address can give permissions to or revoke permissions from its operators.\",\"params\":{\"account\":\"The account setting its operators' permissions.\",\"permissionsData\":\"The data which specifies the permissions the operator is being given.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"WILDCARD_PROJECT_ID()\":{\"notice\":\"The project ID considered a wildcard, meaning it will grant permissions to all projects.\"},\"hasPermission(address,address,uint256,uint256,bool,bool)\":{\"notice\":\"Check if an operator has a specific permission for a specific address and project ID.\"},\"hasPermissions(address,address,uint256,uint256[],bool,bool)\":{\"notice\":\"Check if an operator has all of the specified permissions for a specific address and project ID.\"},\"permissionsOf(address,address,uint256)\":{\"notice\":\"The permissions that an operator has been given by an account for a specific project.\"},\"setPermissionsFor(address,(address,uint56,uint8[]))\":{\"notice\":\"Sets permissions for an operator.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPermissions.sol\":\"JBPermissions\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@bananapus/permission-ids/src/JBPermissionIds.sol\":{\"keccak256\":\"0x04c2a9b2444b205d4623d0324deddaaaa96c0e479ac1f7d8ac51a022e4be5170\",\"urls\":[\"bzz-raw://d600393d575f04bdcb8e7435d25a43488bab92e6d1cc067bef14d9140fd77fb8\",\"dweb:/ipfs/QmbnGGSmCmi4cUzSria6Nyq6eBvQCt9YU46F8be7iu9UJQ\"],\"license\":\"MIT\"},\"src/JBPermissions.sol\":{\"keccak256\":\"0xc4b8810de4c3f13be7dc507918c4f4f8c0aa44e2ef19e53dab96e14c69dfc90a\",\"urls\":[\"bzz-raw://2d42ab5a693c733dfe4e4327ab74ef29f0fc2017d9a25d738f7e43c4ded50a5e\",\"dweb:/ipfs/Qme2odBNT6iAdiaQyx3c8GsTSJtiN2pG7EEGcCKVubV5vo\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea2646970667358221220224263c5a8feeb9e80a23b5c7cb97f6068bb380902449f9f30f6a348ecf49aaa64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -618,7 +618,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPermissions.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBPrices.json b/deployments/nana-core-testnet/sepolia/JBPrices.json index 935b7cd4..b400c673 100644 --- a/deployments/nana-core-testnet/sepolia/JBPrices.json +++ b/deployments/nana-core-testnet/sepolia/JBPrices.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBPrices", - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", "abi": [ { "type": "constructor", @@ -369,340 +369,340 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPermissions\",\"name\":\"permissions\",\"type\":\"address\"},{\"internalType\":\"contract IJBProjects\",\"name\":\"projects\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"permissionId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBPermissioned_Unauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedAlreadyExists\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_PriceFeedNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroPricingCurrency\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBPrices_ZeroUnitCurrency\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"AddPriceFeed\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DEFAULT_PROJECT_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PERMISSIONS\",\"outputs\":[{\"internalType\":\"contract IJBPermissions\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PROJECTS\",\"outputs\":[{\"internalType\":\"contract IJBProjects\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"feed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"addPriceFeedFor\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"priceFeedFor\",\"outputs\":[{\"internalType\":\"contract IJBPriceFeed\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pricingCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"unitCurrency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"pricePerUnitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"details\":\"Price feeds can only be added, not modified or removed.This contract's owner can add protocol-wide default price feed by passing a `projectId` of 0.\",\"params\":{\"feed\":\"The address of the price feed to add.\",\"pricingCurrency\":\"The currency the feed's output price is in terms of.\",\"projectId\":\"The ID of the project to add a feed for. If `projectId` is 0, add a protocol-wide default price feed.\",\"unitCurrency\":\"The currency being priced by the feed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"owner\":\"The address that will own the contract.\",\"permissions\":\"A contract storing permissions.\",\"projects\":\"A contract which mints ERC-721s that represent project ownership and transfers.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"decimals\":\"The number of decimals the returned fixed point price should include.\",\"pricingCurrency\":\"The currency the feed's resulting price is in terms of.\",\"projectId\":\"The ID of the project to check the feed for. Feeds stored in ID 0 are used by default for all projects.\",\"unitCurrency\":\"The currency being priced by the feed.\"},\"returns\":{\"_0\":\"The `pricingCurrency` price of 1 `unitCurrency`, as a fixed point number with the specified number of decimals.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DEFAULT_PROJECT_ID()\":{\"notice\":\"The ID to store default values in.\"},\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PERMISSIONS()\":{\"notice\":\"A contract storing permissions.\"},\"PROJECTS()\":{\"notice\":\"Mints ERC-721s that represent project ownership and transfers.\"},\"addPriceFeedFor(uint256,uint256,uint256,address)\":{\"notice\":\"Add a price feed for the `unitCurrency`, priced in terms of the `pricingCurrency`.\"},\"priceFeedFor(uint256,uint256,uint256)\":{\"notice\":\"The available price feeds.\"},\"pricePerUnitOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Gets the `pricingCurrency` cost for one unit of the `unitCurrency`.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBPrices.sol\":\"JBPrices\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBPrices.sol\":{\"keccak256\":\"0x34af3a6dbb67de1ebd431b24c6e67b52b9b852b1dc2348f3817fa231073f72fb\",\"urls\":[\"bzz-raw://27a4ddde773ace4a405464bf8fdc10fc3f70a4bed4087067f3d12c45f329e98c\",\"dweb:/ipfs/QmbQb7KTF1xYqME7X5u5siNkCHwQnjDyofuJc9DeV65CWb\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/abstract/JBPermissioned.sol\":{\"keccak256\":\"0xbaaa61c6aa043522617d3c1a86960c23b9978ee2a6c9d593b00beeeb6ce64423\",\"urls\":[\"bzz-raw://09beed8608e02ce9dbf28814309aaf62c9eec67e0701a26113bdbb4cbae56c42\",\"dweb:/ipfs/QmZrHFnpjX9uBzbFrSjqQgQBkvpJ1ZyvjtT9RfneNGv32S\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissioned.sol\":{\"keccak256\":\"0x5b038d4dee116584e88b230920e56d48e135053e3f7e5642eaea14a775c1dad7\",\"urls\":[\"bzz-raw://19e43102f349fd4a1da1c0943ffb8f2950007fe4bb4bb7e8f74fc142575d091b\",\"dweb:/ipfs/QmXHAt4KzDTdDZgDDefEXH2WKi7NcfkJb9R7nxW5uDqsNp\"],\"license\":\"MIT\"},\"src/interfaces/IJBPermissions.sol\":{\"keccak256\":\"0x49d2b91a866004af098a6770b28040071885b048b4b50744b12a1e5b212c5e5e\",\"urls\":[\"bzz-raw://089b4dda50be91412ffe1fbe333f78cc894f073c1a7afe469f10a2cee12fbf9e\",\"dweb:/ipfs/QmYPPBZ6HwBa1RNkNGqGcR2xgj4fnWBzrPHHoJG3kZA6AN\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBPermissionsData.sol\":{\"keccak256\":\"0xd5a5fe65b1deb40b5cd9c8e05bc1352d0e95f3a18b4986fab7abdc621beb19c7\",\"urls\":[\"bzz-raw://a6141eaa414d3d61de671ae3584b87e98044bf6392cb94d2acd1bb5cc7c19db4\",\"dweb:/ipfs/QmbtvALmburKLRC5fHXscoeZii1N2qQrJAdqarfvSKaKEk\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x4CDb4200e4E65a277676Cd5E8d3c7C7C4dA7fBe5", - "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x4886C30C81a17a3A1084fd1812008fA0f71a20B9", + "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000ecb62030e30bb027f672f24692111492ba2bbc8481565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004cdb4200e4e65a277676cd5e8d3c7c7c4da7fbe581565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a264697066735822122088242f93ee25de67663efc49c3c760f3d27cf38dbaa976f9cd3f93820d6081a964736f6c63430008170033", + "bytecode": "0x60e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b981565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -773,7 +773,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBPrices.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBProjects.json b/deployments/nana-core-testnet/sepolia/JBProjects.json index 63086516..0832ece3 100644 --- a/deployments/nana-core-testnet/sepolia/JBProjects.json +++ b/deployments/nana-core-testnet/sepolia/JBProjects.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBProjects", - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", "abi": [ { "type": "constructor", @@ -630,338 +630,338 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x13dd061770956c8489b80cfc89d9cdfc8ea2783d953691ea037a380731d52784\",\"urls\":[\"bzz-raw://ed37f0f86e7fe31659e48c3a2a5920a92dd7f13c85cf8991fb79fe5f01e08efd\",\"dweb:/ipfs/QmUtm9bQGvjr9hHGwkPWrbgFmVqzaJcxjkaYDex2oGsonS\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0x7f7a26306c79a65fb8b3b6c757cd74660c532cd8a02e165488e30027dd34ca49\",\"urls\":[\"bzz-raw://d01e0b2b837ee2f628545e54d8715b49c7ef2befd08356c2e7f6c50dde8a1c22\",\"dweb:/ipfs/QmWBAn6y2D1xgftci97Z3qR9tQnkvwQpYwFwkTvDMvqU4i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x9e8778b14317ba9e256c30a76fd6c32b960af621987f56069e1e819c77c6a133\",\"urls\":[\"bzz-raw://1777404f1dcd0fac188e55a288724ec3c67b45288e49cc64723e95e702b49ab8\",\"dweb:/ipfs/QmZFdC626GButBApwDUvvTnUzdinevC3B24d7yyh57XkiA\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"feeProjectOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721IncorrectOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721InsufficientApproval\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidApprover\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOperator\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidReceiver\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"ERC721InvalidSender\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"ERC721NonexistentToken\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableInvalidOwner\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Approval\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ApprovalForAll\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Create\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetTokenUriResolver\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\",\"indexed\":true}],\"type\":\"event\",\"name\":\"Transfer\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"count\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"createFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"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\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"safeTransferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setApprovalForAll\"},{\"inputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"resolver\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenUriResolver\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenUriResolver\",\"outputs\":[{\"internalType\":\"contract IJBTokenUriResolver\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"params\":{\"feeProjectOwner\":\"The address that will receive the fee-project. If `address(0)` the fee-project will not be minted.\",\"owner\":\"The owner of the contract who can set metadata.\"}},\"createFor(address)\":{\"details\":\"Anyone can create a project on an owner's behalf.\",\"params\":{\"owner\":\"The address that will be the owner of the project.\"},\"returns\":{\"projectId\":\"The token ID of the newly created project.\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setTokenUriResolver(address)\":{\"params\":{\"resolver\":\"The address of the new resolver.\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\",\"params\":{\"interfaceId\":\"The ID of the interface to check for adherence to.\"},\"returns\":{\"_0\":\"A flag indicating if the provided interface ID is supported.\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get a URI of.\"},\"returns\":{\"_0\":\"The token URI to use for the provided `projectId`.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"count()\":{\"notice\":\"The number of projects that have been created using this contract.\"},\"createFor(address)\":{\"notice\":\"Create a new project for the specified owner, which mints an NFT (ERC-721) into their wallet.\"},\"setTokenUriResolver(address)\":{\"notice\":\"Sets the address of the resolver used to retrieve the tokenURI of projects.\"},\"supportsInterface(bytes4)\":{\"notice\":\"Indicates whether this contract adheres to the specified interface.\"},\"tokenURI(uint256)\":{\"notice\":\"Returns the URI where the ERC-721 standard JSON of a project is hosted.\"},\"tokenUriResolver()\":{\"notice\":\"The contract resolving each project ID to its ERC721 URI.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBProjects.sol\":\"JBProjects\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0xff6d0bb2e285473e5311d9d3caacb525ae3538a80758c10649a4d61029b017bb\",\"urls\":[\"bzz-raw://8ed324d3920bb545059d66ab97d43e43ee85fd3bd52e03e401f020afb0b120f6\",\"dweb:/ipfs/QmfEckWLmZkDDcoWrkEvMWhms66xwTLff9DDhegYpvHo1a\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x39ed367e54765186281efcfe83e47cf0ad62cc879f10e191360712507125f29a\",\"urls\":[\"bzz-raw://2c5ae6d85bd48cca8d6d2fcec8c63efd86f56f8a5832577a47e403ce0e65cb09\",\"dweb:/ipfs/QmUtcS8AbRSWhuc61puYet58os8FvSqm329ChoW8wwZXZk\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"],\"license\":\"MIT\"},\"src/JBProjects.sol\":{\"keccak256\":\"0x501bb09a3c575da68b159ced10116edbdbfbd6d8364525497ebe84b05862f3a5\",\"urls\":[\"bzz-raw://8207fb7e600161ff8fa921b13e14a93df0881eea9562c51372af2fea6298ded8\",\"dweb:/ipfs/QmadVV8xqmmZkbWrvTDQw32tfMN2TVURMxGu5BwiXJj5qh\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1" ], - "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0b38038062001b0b833981016040819052620000349162000729565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000807565b506001620000a0828262000807565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b5050620009a2565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008d3565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb83836200020f565b6200020a600084848462000279565b505050565b6001600160a01b0382166200023b57604051633250574960e11b815260006004820152602401620000ca565b60006200024a838383620003b0565b90506001600160a01b038116156200020a576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003aa57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002be903390889087908790600401620008fb565b6020604051808303816000875af1925050508015620002fc575060408051601f3d908101601f19168201909252620002f9918101906200096f565b60015b6200036a573d8080156200032d576040519150601f19603f3d011682016040523d82523d6000602084013e62000332565b606091505b5080516000036200036257604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a857604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b50505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e057620003e0818486620004af565b6001600160a01b038116156200042057620003ff600085818062000519565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000450576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004bc83838362000647565b6200020a576001600160a01b038316620004ed57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200052e57506001600160a01b03821615155b15620006175760006200054184620006d0565b90506001600160a01b038316158015906200056e5750826001600160a01b0316816001600160a01b031614155b8015620005a157506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005cc5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006155783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006c85750826001600160a01b0316846001600160a01b03161480620006a357506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006c857506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070b57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073d57600080fd5b620007488362000711565b9150620007586020840162000711565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078c57607f821691505b602082108103620007ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020a576000816000526020600020601f850160051c81016020861015620007de5750805b601f850160051c820191505b81811015620007ff57828155600101620007ea565b505050505050565b81516001600160401b0381111562000823576200082362000761565b6200083b8162000834845462000777565b84620007b3565b602080601f8311600181146200087357600084156200085a5750858301515b600019600386901b1c1916600185901b178555620007ff565b600085815260208120601f198616915b82811015620008a45788860151825594840194600190910190840162000883565b5085821015620008c35787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008f457634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b828110156200094b5785810182015185820160a0015281016200092d565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200098257600080fd5b81516001600160e01b0319811681146200099b57600080fd5b9392505050565b61115980620009b26000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d2f565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610d9c565b610198610193366004610daf565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610ddd565b6103b0565b005b6101c36101d3366004610e09565b6103bf565b6101c36101e6366004610e4a565b61044f565b6101c36101f9366004610e09565b6104ac565b61019861020c366004610daf565b6104cc565b61016261021f366004610e4a565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e67565b610542565b6101c3610266366004610f14565b61054d565b610162610279366004610e4a565b610564565b61017861028c366004610daf565b6105d3565b600854610198906001600160a01b031681565b6101446102b2366004610fc3565b610671565b6101c36102c5366004610e4a565b61069f565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106dd565b92915050565b60606000805461030490610ff1565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff1565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072d565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610766565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610773565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086c565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072d565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086c565b6105316000610899565b565b60606001805461030490610ff1565b6103bb3383836108eb565b6105588484846103bf565b6104498484848461098a565b60006007600081546105759061102b565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105ce8282610ab3565b919050565b6008546060906001600160a01b0316806105fd575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610642573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066a9190810190611052565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a761086c565b6001600160a01b0381166106d157604051631e4fbdf760e01b8152600060048201526024016103e5565b6106da81610899565b50565b60006001600160e01b031982166380ac58cd60e01b148061070e57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610acd565b6000828152600260205260408120546001600160a01b03908116908316156107a0576107a0818486610bd3565b6001600160a01b038116156107de576107bd600085600080610acd565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091d57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561044957604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cc9033908890879087906004016110c9565b6020604051808303816000875af1925050508015610a07575060408051601f3d908101601f19168201909252610a0491810190611106565b60015b610a70573d808015610a35576040519150601f19603f3d011682016040523d82523d6000602084013e610a3a565b606091505b508051600003610a6857604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aac57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b5050505050565b6103bb828260405180602001604052806000815250610c37565b8080610ae157506001600160a01b03821615155b15610ba3576000610af18461072d565b90506001600160a01b03831615801590610b1d5750826001600160a01b0316816001600160a01b031614155b8015610b305750610b2e8184610671565b155b15610b595760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba15783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610bde838383610c4e565b6104c7576001600160a01b038316610c0c57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c418383610cb4565b6104c7600084848461098a565b60006001600160a01b03831615801590610cac5750826001600160a01b0316846001600160a01b03161480610c885750610c888484610671565b80610cac57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610cde57604051633250574960e11b8152600060048201526024016103e5565b6000610cec83836000610773565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106da57600080fd5b600060208284031215610d4157600080fd5b813561066a81610d19565b60005b83811015610d67578181015183820152602001610d4f565b50506000910152565b60008151808452610d88816020860160208601610d4c565b601f01601f19169290920160200192915050565b60208152600061066a6020830184610d70565b600060208284031215610dc157600080fd5b5035919050565b6001600160a01b03811681146106da57600080fd5b60008060408385031215610df057600080fd5b8235610dfb81610dc8565b946020939093013593505050565b600080600060608486031215610e1e57600080fd5b8335610e2981610dc8565b92506020840135610e3981610dc8565b929592945050506040919091013590565b600060208284031215610e5c57600080fd5b813561066a81610dc8565b60008060408385031215610e7a57600080fd5b8235610e8581610dc8565b915060208301358015158114610e9a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee457610ee4610ea5565b604052919050565b600067ffffffffffffffff821115610f0657610f06610ea5565b50601f01601f191660200190565b60008060008060808587031215610f2a57600080fd5b8435610f3581610dc8565b93506020850135610f4581610dc8565b925060408501359150606085013567ffffffffffffffff811115610f6857600080fd5b8501601f81018713610f7957600080fd5b8035610f8c610f8782610eec565b610ebb565b818152886020838501011115610fa157600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fd657600080fd5b8235610fe181610dc8565b91506020830135610e9a81610dc8565b600181811c9082168061100557607f821691505b60208210810361102557634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104b57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106457600080fd5b815167ffffffffffffffff81111561107b57600080fd5b8201601f8101841361108c57600080fd5b805161109a610f8782610eec565b8181528560208385010111156110af57600080fd5b6110c0826020830160208601610d4c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906110fc90830184610d70565b9695505050505050565b60006020828403121561111857600080fd5b815161066a81610d1956fea26469706673582212204a0a7bfb5211669eabdd15f26c99e4982c109fb071cdc452bdc0411eb8f0a12564736f6c63430008170033", + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1071,7 +1071,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBProjects.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBRulesets.json b/deployments/nana-core-testnet/sepolia/JBRulesets.json index d99e9f39..0c6ab151 100644 --- a/deployments/nana-core-testnet/sepolia/JBRulesets.json +++ b/deployments/nana-core-testnet/sepolia/JBRulesets.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBRulesets", - "address": "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43", + "address": "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D", "abi": [ { "type": "constructor", @@ -85,7 +85,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -170,7 +170,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -189,6 +189,118 @@ ], "stateMutability": "view" }, + { + "type": "function", + "name": "deriveCycleNumberFrom", + "inputs": [ + { + "name": "baseRulesetCycleNumber", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveStartFrom", + "inputs": [ + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "mustStartAtOrAfter", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "pure" + }, + { + "type": "function", + "name": "deriveWeightFrom", + "inputs": [ + { + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetStart", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetDuration", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeight", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetWeightCutPercent", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "baseRulesetCacheId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "start", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "weight", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, { "type": "function", "name": "getRulesetOf", @@ -241,7 +353,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -307,7 +419,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -370,7 +482,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "internalType": "uint256" }, @@ -427,7 +539,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -493,7 +605,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -585,7 +697,7 @@ "internalType": "uint256" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint256", "indexed": false, "internalType": "uint256" @@ -618,24 +730,44 @@ "anonymous": false }, { - "type": "error", - "name": "JBControlled_ControllerUnauthorized", + "type": "event", + "name": "WeightCacheUpdated", "inputs": [ { - "name": "controller", + "name": "projectId", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "weight", + "type": "uint112", + "indexed": false, + "internalType": "uint112" + }, + { + "name": "weightCutMultiple", + "type": "uint256", + "indexed": false, + "internalType": "uint256" + }, + { + "name": "caller", "type": "address", + "indexed": false, "internalType": "address" } - ] + ], + "anonymous": false }, { "type": "error", - "name": "JBRulesets_InvalidDecayPercent", + "name": "JBControlled_ControllerUnauthorized", "inputs": [ { - "name": "percent", - "type": "uint256", - "internalType": "uint256" + "name": "controller", + "type": "address", + "internalType": "address" } ] }, @@ -698,6 +830,17 @@ } ] }, + { + "type": "error", + "name": "JBRulesets_InvalidWeightCutPercent", + "inputs": [ + { + "name": "percent", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "PRBMath_MulDiv_Overflow", @@ -720,337 +863,337 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidDecayPercent\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decayPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"decayPercent\":\"A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0x9a0d949ea3b79bf5edd35366d0b6872a94ff1c91f5c4c6a5c08c4d0c8bf7afc1\",\"urls\":[\"bzz-raw://203825c2247b772e8108c88af2c759022e9f444d61343f322c076378c0c5c604\",\"dweb:/ipfs/QmQ8dYTGSv8HHPYi5x5gfkgBsjtJFmEKjRGYSCHPBKamcW\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x28a3c175cd6a2721aba5416218f64c8fc63ccea735e824f7eb1922ab3d241286\",\"urls\":[\"bzz-raw://6f9504290f6b44e3c68d10990af834f182a5ea49c4f5552579d68ded8890fc5b\",\"dweb:/ipfs/QmXKme97iEX6R8KYL4AUNBLRJLXdtrwt3ZvhV4Ds3AKKQ2\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"hook\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetApprovalHook\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetDuration\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidRulesetEndTime\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeight\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"percent\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBRulesets_InvalidWeightCutPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"basedOnId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetInitialized\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"RulesetQueued\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"weightCutMultiple\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"WeightCacheUpdated\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startingId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"size\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset[]\",\"name\":\"rulesets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentApprovalStatusForLatestRulesetOf\",\"outputs\":[{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveCycleNumberFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"deriveStartFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetWeightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"baseRulesetCacheId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"start\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"deriveWeightFrom\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getRulesetOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestQueuedOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"enum JBApprovalStatus\",\"name\":\"approvalStatus\",\"type\":\"uint8\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"latestRulesetIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"duration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"weightCutPercent\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"mustStartAtOrAfter\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"queueFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"upcomingOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"updateRulesetWeightCache\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allOf(uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the rulesets of.\",\"size\":\"The maximum number of rulesets to return.\",\"startingId\":\"The ID of the ruleset to begin with. This will be the latest ruleset in the result. If 0 is passed, the project's latest ruleset will be used.\"},\"returns\":{\"rulesets\":\"The rulesets as an array of `JBRuleset` structs.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to check the approval status of.\"},\"returns\":{\"_0\":\"The project's current approval status.\"}},\"currentOf(uint256)\":{\"details\":\"If a current ruleset of the project is not found, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the current ruleset of.\"},\"returns\":{\"ruleset\":\"The project's current ruleset.\"}},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"details\":\"Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.\",\"params\":{\"baseRulesetCycleNumber\":\"The cycle number of the base ruleset.\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"start\":\"The start time of the ruleset to derive a cycle number for.\"},\"returns\":{\"_0\":\"The ruleset's cycle number.\"}},\"deriveStartFrom(uint256,uint256,uint256)\":{\"params\":{\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"mustStartAtOrAfter\":\"The earliest time the next ruleset can start. The ruleset cannot start before this timestamp.\"},\"returns\":{\"start\":\"The next start time.\"}},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"baseRulesetCacheId\":\"The ID of the ruleset to base the calculation on (the previous ruleset).\",\"baseRulesetDuration\":\"The duration of the base ruleset.\",\"baseRulesetStart\":\"The start time of the base ruleset.\",\"baseRulesetWeight\":\"The weight of the base ruleset.\",\"baseRulesetWeightCutPercent\":\"The weight cut percent of the base ruleset.\",\"projectId\":\"The ID of the project to which the ruleset weights apply.\",\"start\":\"The start time of the ruleset to derive a weight for.\"},\"returns\":{\"weight\":\"The derived weight, as a fixed point number with 18 decimals.\"}},\"getRulesetOf(uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project to which the ruleset belongs.\",\"rulesetId\":\"The ID of the ruleset to get the struct of.\"},\"returns\":{\"ruleset\":\"The ruleset struct.\"}},\"latestQueuedOf(uint256)\":{\"details\":\"Returns struct and status for the ruleset initialized furthest in the future (at the end of the rulset queue).\",\"params\":{\"projectId\":\"The ID of the project to get the latest queued ruleset of.\"},\"returns\":{\"approvalStatus\":\"The approval hook's status for the ruleset.\",\"ruleset\":\"The project's latest queued ruleset's struct.\"}},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"details\":\"Only a project's current controller can queue its rulesets.\",\"params\":{\"approvalHook\":\"A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.\",\"duration\":\"The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).\",\"metadata\":\"Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.\",\"mustStartAtOrAfter\":\"The earliest time the ruleset can start. The ruleset cannot start before this timestamp.\",\"projectId\":\"The ID of the project to queue the ruleset for.\",\"weight\":\"A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.\",\"weightCutPercent\":\"A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one.\"},\"returns\":{\"_0\":\"The struct of the new ruleset.\"}},\"upcomingOf(uint256)\":{\"details\":\"If an upcoming ruleset is not found for the project, returns an empty ruleset with all properties set to 0.\",\"params\":{\"projectId\":\"The ID of the project to get the upcoming ruleset of.\"},\"returns\":{\"ruleset\":\"The struct for the project's upcoming ruleset.\"}},\"updateRulesetWeightCache(uint256)\":{\"params\":{\"projectId\":\"The ID of the project having its ruleset weight cached.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"allOf(uint256,uint256,uint256)\":{\"notice\":\"Get an array of a project's rulesets up to a maximum array size, sorted from latest to earliest.\"},\"currentApprovalStatusForLatestRulesetOf(uint256)\":{\"notice\":\"The current approval status of a given project's latest ruleset.\"},\"currentOf(uint256)\":{\"notice\":\"The ruleset that is currently active for the specified project.\"},\"deriveCycleNumberFrom(uint256,uint256,uint256,uint256)\":{\"notice\":\"The cycle number of the next ruleset given the specified ruleset.\"},\"deriveStartFrom(uint256,uint256,uint256)\":{\"notice\":\"The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle.\"},\"deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"The accumulated weight change since the specified ruleset.\"},\"getRulesetOf(uint256,uint256)\":{\"notice\":\"Get the ruleset struct for a given `rulesetId` and `projectId`.\"},\"latestQueuedOf(uint256)\":{\"notice\":\"The latest ruleset queued for a project. Returns the ruleset's struct and its current approval status.\"},\"latestRulesetIdOf(uint256)\":{\"notice\":\"The ID of the ruleset with the latest start time for a specific project, whether the ruleset has been approved or not.\"},\"queueFor(uint256,uint256,uint256,uint256,address,uint256,uint256)\":{\"notice\":\"Queues the upcoming approvable ruleset for the specified project.\"},\"upcomingOf(uint256)\":{\"notice\":\"The ruleset that's up next for a project.\"},\"updateRulesetWeightCache(uint256)\":{\"notice\":\"Cache the value of the ruleset weight.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBRulesets.sol\":\"JBRulesets\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBRulesets.sol\":{\"keccak256\":\"0xace1fce879c2cd07db1518adb9091344621a0ced6e7abda3fe5c9c0239ad584c\",\"urls\":[\"bzz-raw://c74587ed1cdc1b6877fc23c0bdc8daab48adb33540fef494c10b01d199e51cfb\",\"dweb:/ipfs/QmW7zApznimSpP4ESmp8igsvNUqFLDUfDmEJ9mNvR7a3JZ\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWeightCache.sol\":{\"keccak256\":\"0x523d7c561f4040820c411309d10ee117ad3bf9ae30353d9b5fbe827f15411aaf\",\"urls\":[\"bzz-raw://4d7f9979439244800e00879054fe7861820fc492ab5e668acab5af18cb60b7a5\",\"dweb:/ipfs/QmfQVhJ9xdMpY5RsnNAgWj5pqPkGwVx2uhVzM2BiVyPN9t\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051611dcc380380611dcc83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611d336100996000396000818161015901528181610fba01526110490152611d336000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063855a54ed11610066578063855a54ed1461013357806388bc2ef3146101545780638b04533a14610193578063d7e1ec88146101a8578063fe81dd80146101c857600080fd5b806325a61d5c146100a35780632e6bc58a146100cc57806333f5bd0a146100df57806343a266c21461010d57806370174dcc14610120575b600080fd5b6100b66100b13660046118fe565b6101e8565b6040516100c391906119d2565b60405180910390f35b6100b66100da3660046119e1565b610203565b6100ff6100ed3660046119e1565b60006020819052908152604090205481565b6040519081526020016100c3565b6100b661011b3660046119e1565b6103d0565b6100b661012e366004611a0f565b610556565b6101466101413660046119e1565b610888565b6040516100c3929190611aa6565b61017b7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b0390911681526020016100c3565b6101a66101a13660046119e1565b6108e3565b005b6101bb6101b63660046119e1565b610a40565b6040516100c39190611ac3565b6101db6101d6366004611ad1565b610a8c565b6040516100c39190611afd565b6101f06118b2565b6101fa8383610bd4565b90505b92915050565b61020b6118b2565b600082815260208190526040812054900361022b576101fd600080610bd4565b600061023683610c97565b9050600081156102ce5761024a8483610bd4565b92506102568484610d9d565b9050600481600581111561026c5761026c611a6e565b14806102895750600381600581111561028757610287611a6e565b145b806102a5575060008160058111156102a3576102a3611a6e565b145b156102b1575050919050565b6102c784846040015165ffffffffffff16610bd4565b925061031c565b6000848152602081905260409020546102e8908590610bd4565b92505b42836060015165ffffffffffff16111561031c5761031584846040015165ffffffffffff16610bd4565b92506102eb565b826080015163ffffffff1660000361034157610339600080610bd4565b949350505050565b61034b8484610d9d565b9050600481600581111561036157610361611a6e565b148061037e5750600081600581111561037c5761037c611a6e565b145b1561038f5761033984846000610dcf565b6103a584846040015165ffffffffffff16610bd4565b9250826080015163ffffffff166000036103c457610339600080610bd4565b61033984846000610dcf565b6103d86118b2565b60008281526020819052604081205490036103f8576101fd600080610bd4565b600061040383610eda565b90508015610483576104158382610bd4565b915060006104238484610d9d565b9050600481600581111561043957610439611a6e565b14806104565750600081600581111561045457610454611a6e565b145b15610462575050919050565b826040015165ffffffffffff16915061047b8483610bd4565b92505061052b565b5060008281526020819052604090205461049d8382610bd4565b915060006104ab8484610d9d565b90505b60048160058111156104c2576104c2611a6e565b141580156104e2575060008160058111156104df576104df611a6e565b14155b806104f85750826060015165ffffffffffff1642105b1561052957826040015165ffffffffffff1691506105168483610bd4565b92506105228484610d9d565b90506104ae565b505b816080015163ffffffff166000036105435750919050565b61054f83836001610dcf565b9392505050565b61055e6118b2565b8761056881610f9a565b63ffffffff88111561059f57604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca008611156105c75760405163fafa664f60e01b815260048101879052602401610596565b6001600160701b038711156105ff57604051632dd7f24160e01b8152600481018890526001600160701b036024820152604401610596565b8260000361060b574292505b65ffffffffffff61061c8985611b62565b11156106555761062c8884611b62565b604051632ce261d560e21b8152600481019190915265ffffffffffff6024820152604401610596565b6001600160a01b0385161561075457846001600160a01b03163b60000361069a5760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa925050508015610701575060408051601f3d908101601f191682019092526106fe91810190611b75565b60015b6107295760405163045b9cdd60e31b81526001600160a01b0386166004820152602401610596565b806107525760405163045b9cdd60e31b81526001600160a01b0387166004820152602401610596565b505b6000898152602081905260408120549042821015610772574261077d565b61077d826001611b62565b905061078b8b828b886110e4565b6001600160a01b0387161515806107a2575060008a115b806107ad5750600088115b156107e45760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156108075760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a36108798b82610bd4565b9b9a5050505050505050505050565b6108906118b2565b6000828152602081905260408120546108a98482610bd4565b92506108db84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff1661134f565b915050915091565b6000818152602081905260408120546108fd908390610bd4565b9050806080015163ffffffff1660001480610920575060c081015163ffffffff16155b15610929575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff909116906109799061c350906001600160a81b0316611b62565b6109839190611b97565b836060015165ffffffffffff1661099a9190611b62565b905060008142106109ab57816109ad565b425b90506000846060015165ffffffffffff16826109c99190611bae565b90506000856080015163ffffffff1682816109e6576109e6611bc1565b0490506109f4878785611413565b85546dffffffffffffffffffffffffffff19166001600160701b0391909116178555600190940180546001600160a81b0319166001600160a81b03909516949094179093555050505050565b60008181526020819052604081205481610a5a8483610bd4565b905061033984826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff1661134f565b606082600003610aa85760008481526020819052604090205492505b600080610ab58686610bd4565b90505b602081015165ffffffffffff1615801590610ad257508382105b15610b015781610ae181611bd7565b925050610afa86826040015165ffffffffffff16610bd4565b9050610ab8565b8167ffffffffffffffff811115610b1a57610b1a611bf0565b604051908082528060200260200182016040528015610b5357816020015b610b406118b2565b815260200190600190039081610b385790505b50925081600003610b6557505061054f565b610b6f8686610bd4565b905060005b82811015610bca57818482610b8881611bd7565b935081518110610b9a57610b9a611c06565b6020026020010181905250828114610bc557610bc287836040015165ffffffffffff16610bd4565b91505b610b74565b5050509392505050565b610bdc6118b2565b81156101fd5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610cb18383610bd4565b9050806060015165ffffffffffff164210610ccf5750600092915050565b805165ffffffffffff16600103610ce65750919050565b604081015165ffffffffffff16610cfb6118b2565b610d058583610bd4565b9050806060015165ffffffffffff16421015610d3e57806020015165ffffffffffff169350806040015165ffffffffffff169150610cfb565b610d488585610bd4565b9250806080015163ffffffff16600014158015610d855750806080015163ffffffff168360600151610d7a9190611c1c565b65ffffffffffff1642105b15610d9557506000949350505050565b505050919050565b60006101fa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff1661134f565b610dd76118b2565b60008215610e04576080840151610df49063ffffffff1642611bae565b610dff906001611b62565b610e0f565b610e0f426001611b62565b90506000610e1d858361157b565b90506000610e2b8683611627565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff168152602001610e94898986611413565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b60008181526020819052604081205481610ef48483610bd4565b90505b608081015163ffffffff1615801590610f315750806080015163ffffffff168160600151610f259190611c42565b65ffffffffffff164210155b15610f40575060009392505050565b806060015165ffffffffffff164210610f66576020015165ffffffffffff169392505050565b610f7c84826040015165ffffffffffff16610bd4565b805190915065ffffffffffff16600003610ef7575060009392505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611001573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110259190611c61565b6001600160a01b0316146110e157604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015611098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110bc9190611c61565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610596565b50565b60008481526020819052604081205490819003611118576111128561110a600080610bd4565b86858761169d565b50611349565b60006111248683610bd4565b905060006111328783610d9d565b9050816060015165ffffffffffff1642101580156111625750600481600581111561115f5761115f611a6e565b14155b80156111805750600081600581111561117d5761117d611a6e565b14155b806111df5750816060015165ffffffffffff16421080156111c15750816080015163ffffffff1682606001516111b69190611c42565b65ffffffffffff1684105b80156111df575060048160058111156111dc576111dc611a6e565b14155b8061127b5750816060015165ffffffffffff16421080156112215750816080015163ffffffff1682606001516112159190611c42565b65ffffffffffff168410155b801561123f5750600481600581111561123c5761123c611a6e565b14155b801561125d5750600381600581111561125a5761125a611a6e565b14155b801561127b5750600081600581111561127857611278611a6e565b14155b156112995761129687836040015165ffffffffffff16610bd4565b91505b60e08201516000906001600160a01b031615611324578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113159190611c7e565b61131f9088611b62565b611327565b60005b905061134488848988851161133c578861133e565b845b8a61169d565b505050505b50505050565b60008160000361136157506000610339565b600061136d8684610bd4565b60e08101519091506001600160a01b031661138c576000915050610339565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156113e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114099190611c97565b9695505050505050565b6000826080015163ffffffff166000036114635761145c8360a001516001600160701b03168460c00151633b9aca0061144c9190611cb8565b63ffffffff16633b9aca006117de565b905061054f565b8260a001516001600160701b031690508260c0015163ffffffff166000031561054f576000836060015165ffffffffffff16836114a09190611bae565b90506000846080015163ffffffff1682816114bd576114bd611bc1565b0490506103e88111156115485760008681526004602090815260408083208883015165ffffffffffff168452825291829020825180840190935280546001600160701b03168352600101546001600160a81b03169082018190521561154657805160208201516001600160701b039091169450611543906001600160a81b031683611bae565b91505b505b60005b81811015610bca5761156b848760c00151633b9aca0061144c9190611cb8565b93508315610bca5760010161154b565b6000826080015163ffffffff166000036115965750806101fd565b6000836080015163ffffffff1684606001516115b29190611c42565b65ffffffffffff1690508281106115ca5790506101fd565b608084015160009063ffffffff166115e28386611bae565b6115ec9190611cd5565b90506115f88185611bae565b92505b8284111561161f5760808501516116189063ffffffff1684611b62565b92506115fb565b505092915050565b6000826080015163ffffffff16600003611657578251611648906001611c42565b65ffffffffffff1690506101fd565b6000836060015165ffffffffffff16836116719190611bae565b9050836080015163ffffffff16816116899190611ce9565b8451610339919065ffffffffffff16611b62565b835165ffffffffffff166000036116f55760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b179055611781565b6000611701858461157b565b90506000821161171b57611716868683611413565b61172c565b81600114611729578161172c565b60005b9150600061173a8683611627565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b60008080600019858709858702925082811083820303915050806000036118185783828161180e5761180e611bc1565b049250505061054f565b83811061184957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610596565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6000806040838503121561191157600080fd5b50508035926020909101359150565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161195f606084018265ffffffffffff169052565b506080810151611977608084018263ffffffff169052565b5060a081015161199260a08401826001600160701b03169052565b5060c08101516119aa60c084018263ffffffff169052565b5060e08101516119c560e08401826001600160a01b03169052565b5061010090810151910152565b61012081016101fd8284611920565b6000602082840312156119f357600080fd5b5035919050565b6001600160a01b03811681146110e157600080fd5b600080600080600080600060e0888a031215611a2a57600080fd5b873596506020880135955060408801359450606088013593506080880135611a51816119fa565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611aa257634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611ab58285611920565b61054f610120830184611a84565b602081016101fd8284611a84565b600080600060608486031215611ae657600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b81811015611b4057611b2c838551611920565b928401926101209290920191600101611b19565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156101fd576101fd611b4c565b600060208284031215611b8757600080fd5b8151801515811461054f57600080fd5b80820281158282048414176101fd576101fd611b4c565b818103818111156101fd576101fd611b4c565b634e487b7160e01b600052601260045260246000fd5b600060018201611be957611be9611b4c565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611c3b57611c3b611b4c565b5092915050565b65ffffffffffff818116838216019080821115611c3b57611c3b611b4c565b600060208284031215611c7357600080fd5b815161054f816119fa565b600060208284031215611c9057600080fd5b5051919050565b600060208284031215611ca957600080fd5b81516006811061054f57600080fd5b63ffffffff828116828216039080821115611c3b57611c3b611b4c565b600082611ce457611ce4611bc1565b500690565b600082611cf857611cf8611bc1565b50049056fea26469706673582212204758d34f8f37131be72871c9d5879d9da3174bebac95233c7d8331e947c5adae64736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1086,6 +1229,42 @@ "ruleset": "The project's current ruleset." } }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "details": "Each time a ruleset starts, whether it was queued or cycled over, the cycle number is incremented by 1.", + "params": { + "baseRulesetCycleNumber": "The cycle number of the base ruleset.", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "start": "The start time of the ruleset to derive a cycle number for." + }, + "returns": { + "_0": "The ruleset's cycle number." + } + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "params": { + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "mustStartAtOrAfter": "The earliest time the next ruleset can start. The ruleset cannot start before this timestamp." + }, + "returns": { + "start": "The next start time." + } + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "params": { + "baseRulesetCacheId": "The ID of the ruleset to base the calculation on (the previous ruleset).", + "baseRulesetDuration": "The duration of the base ruleset.", + "baseRulesetStart": "The start time of the base ruleset.", + "baseRulesetWeight": "The weight of the base ruleset.", + "baseRulesetWeightCutPercent": "The weight cut percent of the base ruleset.", + "projectId": "The ID of the project to which the ruleset weights apply.", + "start": "The start time of the ruleset to derive a weight for." + }, + "returns": { + "weight": "The derived weight, as a fixed point number with 18 decimals." + } + }, "getRulesetOf(uint256,uint256)": { "params": { "projectId": "The ID of the project to which the ruleset belongs.", @@ -1109,12 +1288,12 @@ "details": "Only a project's current controller can queue its rulesets.", "params": { "approvalHook": "A contract which dictates whether a proposed ruleset should be accepted or rejected. It can be used to constrain a project owner's ability to change ruleset parameters over time.", - "decayPercent": "A fraction (out of `JBConstants.MAX_DECAY_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `decayPercent` does not apply. - If the `decayPercent` is 0, the `weight` stays the same. - If the `decayPercent` is 10% of `JBConstants.MAX_DECAY_PERCENT`, next ruleset's `weight` will be 90% of the current one.", - "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a decayed `weight`).", + "duration": "The number of seconds the ruleset lasts for, after which a new ruleset starts. - A `duration` of 0 means this ruleset will remain active until the project owner queues a new ruleset. That new ruleset will start immediately. - A ruleset with a non-zero `duration` applies until the duration ends – any newly queued rulesets will be *queued* to take effect afterwards. - If a duration ends and no new rulesets are queued, the ruleset rolls over to a new ruleset with the same rules (except for a new `start` timestamp and a cut `weight`).", "metadata": "Arbitrary extra data to associate with this ruleset. This metadata is not used by `JBRulesets`.", "mustStartAtOrAfter": "The earliest time the ruleset can start. The ruleset cannot start before this timestamp.", "projectId": "The ID of the project to queue the ruleset for.", - "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid." + "weight": "A fixed point number with 18 decimals that contracts can use to base arbitrary calculations on. Payment terminals generally use this to determine how many tokens should be minted when the project is paid.", + "weightCutPercent": "A fraction (out of `JBConstants.MAX_WEIGHT_CUT_PERCENT`) to reduce the next ruleset's `weight` by. - If a ruleset specifies a non-zero `weight`, the `weightCutPercent` does not apply. - If the `weightCutPercent` is 0, the `weight` stays the same. - If the `weightCutPercent` is 10% of `JBConstants.MAX_WEIGHT_CUT_PERCENT`, next ruleset's `weight` will be 90% of the current one." }, "returns": { "_0": "The struct of the new ruleset." @@ -1152,6 +1331,15 @@ "currentOf(uint256)": { "notice": "The ruleset that is currently active for the specified project." }, + "deriveCycleNumberFrom(uint256,uint256,uint256,uint256)": { + "notice": "The cycle number of the next ruleset given the specified ruleset." + }, + "deriveStartFrom(uint256,uint256,uint256)": { + "notice": "The date that is the nearest multiple of the base ruleset's duration from the start of the next cycle." + }, + "deriveWeightFrom(uint256,uint256,uint256,uint256,uint256,uint256,uint256)": { + "notice": "The accumulated weight change since the specified ruleset." + }, "getRulesetOf(uint256,uint256)": { "notice": "Get the ruleset struct for a given `rulesetId` and `projectId`." }, @@ -1173,7 +1361,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBRulesets.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBSplits.json b/deployments/nana-core-testnet/sepolia/JBSplits.json index 239d13fc..27d9ba86 100644 --- a/deployments/nana-core-testnet/sepolia/JBSplits.json +++ b/deployments/nana-core-testnet/sepolia/JBSplits.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBSplits", - "address": "0x0EEcf21dfC9265E25b81F384993a40e351F897fe", + "address": "0x53A4354b7c6f83b0b2B7d559451a5180a410aB25", "abi": [ { "type": "constructor", @@ -265,337 +265,337 @@ "inputs": [] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "22679830", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "130029970", - "gasUsed": "9849947", - "hash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "index": 133, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 171, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0x063f15e1853f6d3bc6487eea024eb6f6103132ed1bb820e8fbf3ea8aa56c93f6" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 172, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 173, + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 174, + "index": 145, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", - "index": 175, + "index": 146, "topics": [ "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", "0x0000000000000000000000000000000000000000000000000000000000000001", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xEcB62030E30Bb027F672F24692111492Ba2Bbc84", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 176, + "index": 147, "topics": [ "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 177, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 178, + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 179, + "index": 150, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 180, + "index": 151, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 181, + "index": 152, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 182, + "index": 153, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 183, + "index": 154, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 184, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 185, + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 186, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 187, + "index": 158, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000006", - "index": 188, + "index": 159, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 189, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000007", - "index": 190, + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" - ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 - }, - { - "address": "0x721dbE852b6b329212F5AEccA1253F291363867A", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, - "data": "0x", - "index": 191, - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 192, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0xa947112a734f64a7ae16888e960f21595a00d687e5c88fa7a36264f2f3b0882b", - "blockNumber": 6698824, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000008", - "index": 193, + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x7c17e96814a65dad3ed03af8e67c5fc77a12e5b83f3782188d505e400d9971f4", - "transactionIndex": 133 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010000000000000088200000000000040600000800000000000000080000000000000000400000040020000400000000410000000000001040100000000100000200000000008000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000010020200c00000002000000000000140000000000040000020000000000000000000000000104000000000000000000000000000002200000000000000100000000004000000000002000000000040000000000100010000010000020000004000000060000000800000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x4bfa3109359cdd172dafd214f6675e92f51efc7d725636f1fd1ab4b63a71b951\",\"urls\":[\"bzz-raw://3a612d0db4783d7b104216ba718f25040b09e828b9e4bd69d1de8b0e875451c3\",\"dweb:/ipfs/QmTZBkT3mz6ygzijJy7BbdjTPsAvxj96AWsn5GtVQgBPdx\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_PreviousLockedSplitsNotIncluded\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_TotalPercentExceeds100\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBSplits_ZeroSplitPercent\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"struct JBSplit\",\"name\":\"split\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}],\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetSplit\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"FALLBACK_RULESET_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplitGroup[]\",\"name\":\"splitGroups\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setSplitGroupsOf\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"splitsOf\",\"outputs\":[{\"internalType\":\"struct JBSplit[]\",\"name\":\"splits\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"bool\",\"name\":\"preferAddToBalance\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"percent\",\"type\":\"uint32\"},{\"internalType\":\"uint56\",\"name\":\"projectId\",\"type\":\"uint56\"},{\"internalType\":\"address payable\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"uint48\",\"name\":\"lockedUntil\",\"type\":\"uint48\"},{\"internalType\":\"contract IJBSplitHook\",\"name\":\"hook\",\"type\":\"address\"}]}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\"}},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"details\":\"Only a project's controller can set its splits.The new split groups must include any currently set splits that are locked.\",\"params\":{\"projectId\":\"The ID of the project to set the split groups of.\",\"rulesetId\":\"The ID of the ruleset the split groups should be active in. Send 0 to set the default split that'll be active if no ruleset has specific splits set. The default's default is the project's owner.\",\"splitGroups\":\"An array of split groups to set.\"}},\"splitsOf(uint256,uint256,uint256)\":{\"details\":\"If splits aren't found at the given `rulesetId`, they'll be sought in the FALLBACK_RULESET_ID of 0.\",\"params\":{\"groupId\":\"The identifying group of the splits.\",\"projectId\":\"The ID of the project to get splits for.\",\"rulesetId\":\"An identifier within which the returned splits should be considered active.\"},\"returns\":{\"splits\":\"An array of all splits for the project.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"FALLBACK_RULESET_ID()\":{\"notice\":\"The ID of the ruleset that will be checked if nothing was found in the provided rulesetId.\"},\"setSplitGroupsOf(uint256,uint256,(uint256,(bool,uint32,uint56,address,uint48,address)[])[])\":{\"notice\":\"Sets a project's split groups.\"},\"splitsOf(uint256,uint256,uint256)\":{\"notice\":\"Get the split structs for the specified project ID, within the specified ruleset, for the specified group. The splits stored at ruleset 0 are used by default during a ruleset if the splits for the specific ruleset aren't set.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBSplits.sol\":\"JBSplits\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBSplits.sol\":{\"keccak256\":\"0x623066f6c0ee716cd925a207c32ba3466245dddfaca317492f999af1afa1aeb1\",\"urls\":[\"bzz-raw://1925d4d721d66365d142cd39e21acf896e99dafbaebaa698690f9b6d56faaff6\",\"dweb:/ipfs/QmPaKw3UdLsNhYYJ3PY5KNPGVw375EAcyrjxiogYkvdcvs\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75" ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea2646970667358221220f185aa7aabec5417a52e715c7a7df96b00e2f2ac88197120efb9fc0fc5f89f2164736f6c63430008170033", + "bytecode": "0x60a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -644,7 +644,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBSplits.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBTerminalStore.json b/deployments/nana-core-testnet/sepolia/JBTerminalStore.json index 64c3e20b..d0b74f26 100644 --- a/deployments/nana-core-testnet/sepolia/JBTerminalStore.json +++ b/deployments/nana-core-testnet/sepolia/JBTerminalStore.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTerminalStore", - "address": "0xf36a63951A49a9708f007F23B077751be80fFE11", + "address": "0x270eC8711dCa04cf5f3FdF10141428065e07194F", "abi": [ { "type": "constructor", @@ -97,57 +97,25 @@ "type": "function", "name": "currentReclaimableSurplusOf", "inputs": [ - { - "name": "terminal", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "accountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] - }, - { - "name": "decimals", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", + "name": "totalSupply", "type": "uint256", "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "surplus", "type": "uint256", "internalType": "uint256" - }, - { - "name": "useTotalSurplus", - "type": "bool", - "internalType": "bool" } ], "outputs": [ @@ -169,17 +137,44 @@ "internalType": "uint256" }, { - "name": "tokensRedeemed", + "name": "cashOutCount", "type": "uint256", "internalType": "uint256" }, { - "name": "totalSupply", + "name": "terminals", + "type": "address[]", + "internalType": "contract IJBTerminal[]" + }, + { + "name": "accountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] + }, + { + "name": "decimals", "type": "uint256", "internalType": "uint256" }, { - "name": "surplus", + "name": "currency", "type": "uint256", "internalType": "uint256" } @@ -303,17 +298,27 @@ }, { "type": "function", - "name": "recordPaymentFrom", + "name": "recordCashOutFor", "inputs": [ { - "name": "payer", + "name": "holder", "type": "address", "internalType": "address" }, { - "name": "amount", + "name": "projectId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutCount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "accountingContext", "type": "tuple", - "internalType": "struct JBTokenAmount", + "internalType": "struct JBAccountingContext", "components": [ { "name": "token", @@ -329,23 +334,30 @@ "name": "currency", "type": "uint32", "internalType": "uint32" - }, - { - "name": "value", - "type": "uint256", - "internalType": "uint256" } ] }, { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "beneficiary", - "type": "address", - "internalType": "address" + "name": "balanceAccountingContexts", + "type": "tuple[]", + "internalType": "struct JBAccountingContext[]", + "components": [ + { + "name": "token", + "type": "address", + "internalType": "address" + }, + { + "name": "decimals", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "currency", + "type": "uint32", + "internalType": "uint32" + } + ] }, { "name": "metadata", @@ -390,7 +402,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -407,19 +419,24 @@ ] }, { - "name": "tokenCount", + "name": "reclaimAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "cashOutTaxRate", "type": "uint256", "internalType": "uint256" }, { "name": "hookSpecifications", "type": "tuple[]", - "internalType": "struct JBPayHookSpecification[]", + "internalType": "struct JBCashOutHookSpecification[]", "components": [ { "name": "hook", "type": "address", - "internalType": "contract IJBPayHook" + "internalType": "contract IJBCashOutHook" }, { "name": "amount", @@ -438,17 +455,17 @@ }, { "type": "function", - "name": "recordPayoutFor", + "name": "recordPaymentFrom", "inputs": [ { - "name": "projectId", - "type": "uint256", - "internalType": "uint256" + "name": "payer", + "type": "address", + "internalType": "address" }, { - "name": "accountingContext", + "name": "amount", "type": "tuple", - "internalType": "struct JBAccountingContext", + "internalType": "struct JBTokenAmount", "components": [ { "name": "token", @@ -464,18 +481,28 @@ "name": "currency", "type": "uint32", "internalType": "uint32" + }, + { + "name": "value", + "type": "uint256", + "internalType": "uint256" } ] }, { - "name": "amount", + "name": "projectId", "type": "uint256", "internalType": "uint256" }, { - "name": "currency", - "type": "uint256", - "internalType": "uint256" + "name": "beneficiary", + "type": "address", + "internalType": "address" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" } ], "outputs": [ @@ -515,7 +542,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -532,32 +559,44 @@ ] }, { - "name": "amountPaidOut", + "name": "tokenCount", "type": "uint256", "internalType": "uint256" + }, + { + "name": "hookSpecifications", + "type": "tuple[]", + "internalType": "struct JBPayHookSpecification[]", + "components": [ + { + "name": "hook", + "type": "address", + "internalType": "contract IJBPayHook" + }, + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] } ], "stateMutability": "nonpayable" }, { "type": "function", - "name": "recordRedemptionFor", + "name": "recordPayoutFor", "inputs": [ - { - "name": "holder", - "type": "address", - "internalType": "address" - }, { "name": "projectId", "type": "uint256", "internalType": "uint256" }, - { - "name": "redeemCount", - "type": "uint256", - "internalType": "uint256" - }, { "name": "accountingContext", "type": "tuple", @@ -581,31 +620,14 @@ ] }, { - "name": "balanceAccountingContexts", - "type": "tuple[]", - "internalType": "struct JBAccountingContext[]", - "components": [ - { - "name": "token", - "type": "address", - "internalType": "address" - }, - { - "name": "decimals", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "currency", - "type": "uint32", - "internalType": "uint32" - } - ] + "name": "amount", + "type": "uint256", + "internalType": "uint256" }, { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" + "name": "currency", + "type": "uint256", + "internalType": "uint256" } ], "outputs": [ @@ -645,7 +667,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -662,36 +684,9 @@ ] }, { - "name": "reclaimAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "redemptionRate", + "name": "amountPaidOut", "type": "uint256", "internalType": "uint256" - }, - { - "name": "hookSpecifications", - "type": "tuple[]", - "internalType": "struct JBRedeemHookSpecification[]", - "components": [ - { - "name": "hook", - "type": "address", - "internalType": "contract IJBRedeemHook" - }, - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] } ], "stateMutability": "nonpayable" @@ -799,7 +794,7 @@ "internalType": "uint112" }, { - "name": "decayPercent", + "name": "weightCutPercent", "type": "uint32", "internalType": "uint32" }, @@ -1018,204 +1013,204 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "contractAddress": null, - "cumulativeGasUsed": "27455565", + "cumulativeGasUsed": "23545541", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "137375905", - "gasUsed": "10570440", - "hash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "index": 240, + "gasPrice": "560878992", + "gasUsed": "10258367", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "index": 110, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 266, + "index": 190, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xaa6479e5b718cc047f07bfb708286a56b64dbef8549b40e9b18fa52b6f33d125" + "0xec8c10f9af052122091a14eb2e5e65828dbf6a14566a5ac8c835e18825451d5e" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 267, + "index": 191, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 268, + "index": 192, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 269, + "index": 193, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 270, + "index": 194, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 271, + "index": 195, "topics": [ "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 272, + "index": 196, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 273, + "index": 197, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 274, + "index": 198, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 275, + "index": 199, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 276, + "index": 200, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x", - "index": 277, + "index": 201, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 278, + "index": 202, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 } ], - "logsBloom": "0x00000000000010200000000000088000000000000800000000801000000000000080000000000000000400000042120000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000000000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x0000000000001020200000000008002000000000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000130008004000080000000000000000000000002000000000000000000080000000000000000000000000000000040080000000000020000010000000000100000006000000000000000000000002000c000000000080000000000000000002200400000000000100000000024000000000002000000010000000000000000000000000000060000000000000060000010000000000040000004000000000200080000000080040000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"useTotalSurplus\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokensRedeemed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redeemCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordRedemptionFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"redemptionRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBRedeemHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBRedeemHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"decayPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be redeemed.\",\"terminal\":\"The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.\",\"tokensRedeemed\":\"The number of tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"useTotalSurplus\":\"Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"projectId\":\"The ID of the project whose project tokens would be redeemed.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"tokensRedeemed\":\"The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the redemption.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"holder\":\"The account that is redeeming tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being redeemed from.\",\"redeemCount\":\"The number of project tokens to redeem, as a fixed point number with 18 decimals.\"},\"returns\":{\"hookSpecifications\":\"A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"redemptionRate\":\"The redemption rate influencing the reclaim amount.\",\"ruleset\":\"The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a redemption from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0xaa374e2c26cc93e8c22a6953804ee05f811597ef5fa82f76824378b22944778b\",\"urls\":[\"bzz-raw://279c732e161d623cf4d8a9519ca4c42c0c2db99842d0eb2a20c10fde3fa722c9\",\"dweb:/ipfs/QmVViuUXbinQGqtG5M21SgVzKihiCbFUChd4tDhtvwRmxH\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0xfaeee38eee4a977328cb0b365c2cd8bc38021273432a56d1355f31daff2c6a78\",\"urls\":[\"bzz-raw://6d6653aea5db7257bcc8c58a2d50c4e5a428f1ca91ed9f76bb44ce53407ab97a\",\"dweb:/ipfs/Qmf3ft5qXwAVnhH9z9PuQDrZ1m4oi4hGMvvSQPX3jah4DP\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRedeemHook.sol\":{\"keccak256\":\"0x8ab46fcd7d0e739661eb76056ad93ff99106f38420ef0b4eb97fa9f4bb71a68a\",\"urls\":[\"bzz-raw://0ef96fcb7ad26281d444d8e0c677b25114fdd63b1c172d477e030dce8ba53b62\",\"dweb:/ipfs/Qmcx1jRQuwU4pZFuLxsSsx4oMbRaDfktHrPnXextgbWc5m\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x13b4b9f4b847f62442da1c1a59b399f8f201b31a28edb96aa5a8a78ad57c24d0\",\"urls\":[\"bzz-raw://4fcd00b77d0f40cf6d5ee6590b6ef4ee1f606e89ae4c4faed3710fb462108f8e\",\"dweb:/ipfs/QmeoE54DQ3eGw9EDXfN7aTMmEjubAtirahmytDijo6GSeE\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0x29b56a91e8cd4d3e718e18cd934eccbc22c668d08dc26adb43c958722497d3ab\",\"urls\":[\"bzz-raw://7ae1a723eaf16809b9bd73cd235985801aff85283976be342416fa301c3b4793\",\"dweb:/ipfs/QmZYSY7C9dPvR5EnT8YCjVSy842dBVP3wZdYQ71wyPkx2F\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd2201d8b49e7f48540bd53d8cb739f238c63eb74f991cbb646913e90b03eefbf\",\"urls\":[\"bzz-raw://1c328f7dc17ffbc3aaae3a7d67dc71d0732aa78c000976afae2c79067d6a7786\",\"dweb:/ipfs/QmfCYBwCL4nBVvKDWVoujPZPkySZG67DuXf3uXAtZhPDhz\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x822bef715c9d5803208a2e02f8d14e0ffdb1fb2ea84698c30fd801103be4a3d2\",\"urls\":[\"bzz-raw://476c87d74e31cd43419cce01551158993c311ac47ba5fad5768e26054b3c8a91\",\"dweb:/ipfs/QmdpxoGU6suZAm9FS7R47AwSmHEFjwmf6v56WrfZM4QkJc\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRedemptions.sol\":{\"keccak256\":\"0x19b1a05b1cffbe28768d463eee259e4762ef5d831f4d7234ecd6eea1d14b7730\",\"urls\":[\"bzz-raw://5e03c000ce933109b35a53f32a236ac93e4f915c275deecb19366322a4c14f68\",\"dweb:/ipfs/QmbCc4LaGa7mDWWwzjKcp7vEpzzau8ZTHGPX8LHBRFdxsY\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0xbf4157e3615c800a26b0cf367f09cd859a95ddb0e5d53cd7e71551a6fa4fb368\",\"urls\":[\"bzz-raw://48a951f6a7d25c661879907cb9968cb71bd777b3b6ffbe57c60507c7cd7bfc70\",\"dweb:/ipfs/QmSrsBnnaUbV421aqrTG3NV1okGnyTjfFuUtFYdPVwBvMP\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x55cc7047785810c4aa2c7c3bb964efb9f6acb90e0f51caea237c9e7167ceb8c9\",\"urls\":[\"bzz-raw://75ee887000d9ae2ad4d33385ae75e3deef712e5ef0fc80172d2a464b5b4403ea\",\"dweb:/ipfs/QmaUbGBstbg8NbHLTPpPxV8UhNtf2t7ercVH2TudpkBK69\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBAfterRedeemRecordedContext.sol\":{\"keccak256\":\"0x521f5d23a36f0da72362cd84890cc867bd83baa8dc836ba6c5066d51dba2f163\",\"urls\":[\"bzz-raw://6cc461313286dde62d045d6288e87bae5032e035796326f5b1ed6218e58aa9da\",\"dweb:/ipfs/QmQS2AkQwf2ANQieDuaUnpJEdXChoLv4CCbZqHkfywYPSR\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBBeforeRedeemRecordedContext.sol\":{\"keccak256\":\"0x73eadaf6827e82f6ccbe3a1e2b2b7fc6c59cef471f73335041b30ddcc000989d\",\"urls\":[\"bzz-raw://2f3ee84662eed565dbdaed406ef836fffaf55cccd417575578152e5085d0b1f2\",\"dweb:/ipfs/QmaJGFS7hxJsiUdKvbv5BKhSwceDEzKBnt7t5YeNWvYgMK\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRedeemHookSpecification.sol\":{\"keccak256\":\"0x673d16ee1a91bf8de3b37e57284e60451b70a9c2d748c9cdc7a151f5624af18f\",\"urls\":[\"bzz-raw://ceeb5e81effa0f076c5630c756dfcf1548d09f822b255a0a6ee01e54de8c8ae2\",\"dweb:/ipfs/QmSMoMNPRhPMnuJNvWa6S59XRfycGz9o2ApNp63bUW6TdX\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x03ad7bd257d4ac55ecc42b85156dce1c70eec8572dbf8feb093c033912f305e7\",\"urls\":[\"bzz-raw://9665b4c018cd469f94bec4471222cc9e5fd58ac421a0959f70e72618fe37d55b\",\"dweb:/ipfs/QmSUf6HQv2Ckcoy5tSH1UPdD8vDMerfK29G8kaxmxB3Kow\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0x7a57ed3d73bd9457d8e1fb40f5204c364df87cbfdbf42412d5bbc08beabb49c9\",\"urls\":[\"bzz-raw://8b9a83916ee67d32b5f434b35b171c6122bbc4efeaa4fabb8dec2ca4e9e32c6e\",\"dweb:/ipfs/QmNquzUQn6ZvE2wBcMCgru3resV9UNvBWPPetyDChoh8vM\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x7f49fe89eefe848e6af12aa452bd882430ff35e9dd44e9ff3d7be6911496486c\",\"urls\":[\"bzz-raw://136f3baeb71f8ac1c2721eb94b1d469d35cf3fba82f9138760dde6d451d052ef\",\"dweb:/ipfs/QmVeBaYMS9K3rPfneKiVYnFXbp3X8qxrw4qhN4PmuYHppz\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBPrices\",\"name\":\"prices\",\"type\":\"address\"},{\"internalType\":\"contract IJBRulesets\",\"name\":\"rulesets\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerAllowance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateControllerPayoutLimit\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InadequateTerminalStoreBalance\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InsufficientTokens\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"paidAmount\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTerminalStore_InvalidAmountToForwardHook\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetNotFound\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_RulesetPaymentPaused\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTerminalStore_TerminalMigrationNotAllowed\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"y\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"denominator\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"PRBMath_MulDiv_Overflow\"},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"PRICES\",\"outputs\":[{\"internalType\":\"contract IJBPrices\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"RULESETS\",\"outputs\":[{\"internalType\":\"contract IJBRulesets\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBTerminal[]\",\"name\":\"terminals\",\"type\":\"address[]\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentReclaimableSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"accountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"currentTotalSurplusOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordAddedBalanceFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"struct JBAccountingContext[]\",\"name\":\"balanceAccountingContexts\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordCashOutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"reclaimAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"cashOutTaxRate\",\"type\":\"uint256\"},{\"internalType\":\"struct JBCashOutHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBCashOutHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"payer\",\"type\":\"address\"},{\"internalType\":\"struct JBTokenAmount\",\"name\":\"amount\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPaymentFrom\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"tokenCount\",\"type\":\"uint256\"},{\"internalType\":\"struct JBPayHookSpecification[]\",\"name\":\"hookSpecifications\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"contract IJBPayHook\",\"name\":\"hook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordPayoutFor\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"amountPaidOut\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordTerminalMigration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"struct JBAccountingContext\",\"name\":\"accountingContext\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"currency\",\"type\":\"uint32\"}]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"recordUsedAllowanceOf\",\"outputs\":[{\"internalType\":\"struct JBRuleset\",\"name\":\"ruleset\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"uint48\",\"name\":\"cycleNumber\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"id\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"basedOnId\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"start\",\"type\":\"uint48\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint112\",\"name\":\"weight\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"weightCutPercent\",\"type\":\"uint32\"},{\"internalType\":\"contract IJBRulesetApprovalHook\",\"name\":\"approvalHook\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"metadata\",\"type\":\"uint256\"}]},{\"internalType\":\"uint256\",\"name\":\"usedAmount\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetCycleNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedPayoutLimitOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"terminal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rulesetId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currency\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"usedSurplusAllowanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"prices\":\"A contract that exposes price feeds.\",\"rulesets\":\"A contract storing and managing project rulesets.\"}},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.\",\"cashOutCount\":\"The number of tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"currency\":\"The currency that the resulting number will be in terms of.\",\"decimals\":\"The number of decimals to include in the resulting fixed point number.\",\"projectId\":\"The ID of the project whose tokens would be cashed out.\",\"terminals\":\"The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered.\"},\"returns\":{\"_0\":\"The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens.\"}},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"params\":{\"cashOutCount\":\"The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.\",\"projectId\":\"The ID of the project whose project tokens would be cashed out.\",\"surplus\":\"The total terminal token surplus amount, as a fixed point number.\",\"totalSupply\":\"The total project token supply, as a fixed point number with 18 decimals.\"},\"returns\":{\"_0\":\"The number of surplus terminal tokens that would be reclaimed, as a fixed point number with the same number of decimals as the provided `surplus`.\"}},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"details\":\"The surplus is the amount of funds a project has in a terminal in excess of its payout limit.The surplus is represented as a fixed point number with the same amount of decimals as the specified terminal.\",\"params\":{\"accountingContexts\":\"The accounting contexts of tokens whose balances should contribute to the surplus being calculated.\",\"currency\":\"The currency the resulting amount should be in terms of.\",\"decimals\":\"The number of decimals to expect in the resulting fixed point number.\",\"projectId\":\"The ID of the project to get surplus for.\",\"terminal\":\"The terminal the surplus is being calculated for.\"},\"returns\":{\"_0\":\"The current surplus amount the project has in the specified terminal.\"}},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"params\":{\"currency\":\"The currency that the total surplus should be in terms of.\",\"decimals\":\"The number of decimals that the fixed point surplus should include.\",\"projectId\":\"The ID of the project to get the total surplus for.\"},\"returns\":{\"_0\":\"The current total surplus amount that the project has across all terminals.\"}},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"params\":{\"amount\":\"The amount of terminal tokens added, as a fixed point number with the same amount of decimals as its relative terminal.\",\"projectId\":\"The ID of the project which funds are being added to the balance of.\",\"token\":\"The token being added to the balance.\"}},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"details\":\"Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.\",\"params\":{\"accountingContext\":\"The accounting context of the token being reclaimed by the cash out.\",\"balanceAccountingContexts\":\"The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.\",\"cashOutCount\":\"The number of project tokens to cash out, as a fixed point number with 18 decimals.\",\"holder\":\"The account that is cashing out tokens.\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"projectId\":\"The ID of the project being cashing out from.\"},\"returns\":{\"cashOutTaxRate\":\"The cash out tax rate influencing the reclaim amount.\",\"hookSpecifications\":\"A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"reclaimAmount\":\"The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.\",\"ruleset\":\"The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable.\"}},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"details\":\"Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.\",\"params\":{\"amount\":\"The amount of tokens being paid. Includes the token being paid, their value, the number of decimals included, and the currency of the amount.\",\"beneficiary\":\"The address that should be the beneficiary of anything the payment yields (including project tokens minted by the payment).\",\"metadata\":\"Bytes to send to the data hook, if the project's current ruleset specifies one.\",\"payer\":\"The address that made the payment to the terminal.\",\"projectId\":\"The ID of the project being paid.\"},\"returns\":{\"hookSpecifications\":\"A list of pay hooks, including data and amounts to send to them. The terminal should fulfill these specifications.\",\"ruleset\":\"The ruleset the payment was made during, as a `JBRuleset` struct.\",\"tokenCount\":\"The number of project tokens that were minted, as a fixed point number with 18 decimals.\"}},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"params\":{\"accountingContext\":\"The context of the token being paid out.\",\"amount\":\"The amount to pay out (use from the payout limit), as a fixed point number.\",\"currency\":\"The currency of the `amount`. This must match the project's current ruleset's currency.\",\"projectId\":\"The ID of the project that is paying out funds.\"},\"returns\":{\"amountPaidOut\":\"The amount of terminal tokens paid out, as a fixed point number with the same amount of decimals as its relative terminal.\",\"ruleset\":\"The ruleset the payout was made during, as a `JBRuleset` struct.\"}},\"recordTerminalMigration(uint256,address)\":{\"params\":{\"projectId\":\"The ID of the project being migrated.\",\"token\":\"The token being migrated.\"},\"returns\":{\"balance\":\"The project's current balance (which is being migrated), as a fixed point number with the same amount of decimals as its relative terminal.\"}},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"details\":\"When surplus allowance is \\\"used\\\", it is taken out of the project's surplus within a terminal.\",\"params\":{\"accountingContext\":\"The accounting context of the token whose balances should contribute to the surplus allowance being reclaimed from.\",\"amount\":\"The amount to use from the surplus allowance, as a fixed point number.\",\"currency\":\"The currency of the `amount`. Must match the currency of the surplus allowance.\",\"projectId\":\"The ID of the project to use the surplus allowance of.\"},\"returns\":{\"ruleset\":\"The ruleset during the surplus allowance is being used during, as a `JBRuleset` struct.\",\"usedAmount\":\"The amount of terminal tokens used, as a fixed point number with the same amount of decimals as its relative terminal.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"PRICES()\":{\"notice\":\"The contract that exposes price feeds.\"},\"RULESETS()\":{\"notice\":\"The contract storing and managing project rulesets.\"},\"balanceOf(address,uint256,address)\":{\"notice\":\"A project's balance of a specific token within a terminal.\"},\"currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus.\"},\"currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus.\"},\"currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)\":{\"notice\":\"Gets the current surplus amount in a terminal for a specified project.\"},\"currentTotalSurplusOf(uint256,uint256,uint256)\":{\"notice\":\"Gets the current surplus amount for a specified project across all terminals.\"},\"recordAddedBalanceFor(uint256,address,uint256)\":{\"notice\":\"Records funds being added to a project's balance.\"},\"recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)\":{\"notice\":\"Records a cash out from a project.\"},\"recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)\":{\"notice\":\"Records a payment to a project.\"},\"recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a payout from a project.\"},\"recordTerminalMigration(uint256,address)\":{\"notice\":\"Records the migration of funds from this store.\"},\"recordUsedAllowanceOf(uint256,(address,uint8,uint32),uint256,uint256)\":{\"notice\":\"Records a use of a project's surplus allowance.\"},\"usedPayoutLimitOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amount of funds that a project has already paid out from its payout limit during the current ruleset for each terminal, in terms of the payout limit's currency.\"},\"usedSurplusAllowanceOf(address,uint256,address,uint256,uint256)\":{\"notice\":\"The currency-denominated amounts of funds that a project has used from its surplus allowance during the current ruleset for each terminal, in terms of the surplus allowance's currency.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTerminalStore.sol\":\"JBTerminalStore\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"],\"license\":\"MIT\"},\"src/JBTerminalStore.sol\":{\"keccak256\":\"0x0751eb635ac791c32260ced6fbb664e3e2d8a4110beac32f36a00279649a4de1\",\"urls\":[\"bzz-raw://ac86bdd5d8be251bdcc1b67e05ffee07af1d7e5db7c966d8bf9e2290c2f2bdf5\",\"dweb:/ipfs/QmSJoVHgoCgQyx2sNojS3qgEiXgyChDCZz1oALZWtXMU8G\"],\"license\":\"MIT\"},\"src/enums/JBApprovalStatus.sol\":{\"keccak256\":\"0x61c69b6bac7d24b566d87cda23a77e4ca9cdb87200b106aba8534cb9a0973e33\",\"urls\":[\"bzz-raw://6a9ca7249de76f77a8252eefe6bd1b63d47952f25a2acfa2c8db967cdff4470c\",\"dweb:/ipfs/QmaxSxptRQNj8bNy96EreENmrnRWdKmhyihBcxyWzBX5BN\"],\"license\":\"MIT\"},\"src/interfaces/IJBCashOutHook.sol\":{\"keccak256\":\"0x6c516b030f55065eb169d666d11dbd82c4a0b8cea7782ebc5e79433cade38670\",\"urls\":[\"bzz-raw://fa0659eb08477176f130ccaf387d4bde71f0ecca2b24f61124d225f2f50397a3\",\"dweb:/ipfs/QmRNBRGhdGpLQLkC4wK4VrgNEw4EdSiJ4ZZJfiJU4aNt2L\"],\"license\":\"MIT\"},\"src/interfaces/IJBController.sol\":{\"keccak256\":\"0xf577428966a4db4ca17fb73abf2ff2e21cc0e231df2d7247bf410f926d6cb5f7\",\"urls\":[\"bzz-raw://7c1d847382f731b8c464b55ead0ed5c517aa3fa606aaf78b7881aab18108d504\",\"dweb:/ipfs/QmXW3DpPgjYw33A8bMxJFRVZRYjCnWTp28M8sSdPHbDq7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectoryAccessControl.sol\":{\"keccak256\":\"0x1ea768919979d9f625920c05a5e633739febc822ce14b1e4724d739b19c10fb8\",\"urls\":[\"bzz-raw://7c5391a510bd610a97978245b7306d8d21c79d7c45c15f590ba9b603ea751154\",\"dweb:/ipfs/QmPSJvVWswqzv3bVq422UhA2BybMsiHoYFWGPp5Jh6Xs6a\"],\"license\":\"MIT\"},\"src/interfaces/IJBFundAccessLimits.sol\":{\"keccak256\":\"0xfd8ea4cffd289e7fef6e53b5c8983eb6b941de306517f40c047048d3a8a2ca08\",\"urls\":[\"bzz-raw://2765cdee206f8b1b53874448e2481db001cd3706753190cfc9381318c7a7c41c\",\"dweb:/ipfs/QmQ5UYSadtzrb7BcTR93KnAYKXawdyDUG5HjjASV1zbys5\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBPriceFeed.sol\":{\"keccak256\":\"0x4bd84c0f1a5d4729ed709bcddd43f4c50ec4a165ece79780af8dce482ed07d4a\",\"urls\":[\"bzz-raw://62bac4bfb6982fb002f620c77e5c445e62d50241a5aa64a07e51d929f5a42180\",\"dweb:/ipfs/QmWgJUDreVY2BuMX38a1iUUR5kNbMwGnKG3VvurB7oZtuM\"],\"license\":\"MIT\"},\"src/interfaces/IJBPrices.sol\":{\"keccak256\":\"0xb4d5244daa52aafab0c9b8806b7f973afa6a3b298add5966d586d27b78424cfb\",\"urls\":[\"bzz-raw://a819f74455aaa4f679ded378424702f3992608a640d7f943b19938eb4ff711da\",\"dweb:/ipfs/QmSMGvVTsMW3L5YSUyXTKoEsgNpGEutnq4frEZHuDdeDvz\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjectUriRegistry.sol\":{\"keccak256\":\"0xc9ab647179d7d0c857fdd881d6ce96f06254739440ed08e85a1c2042218f7c7d\",\"urls\":[\"bzz-raw://8529368f30c98c8d5a69acdbe4ac79e3eeb4afa5a9cd278325c5f2184ef3d50f\",\"dweb:/ipfs/QmfUaozYiAGt1UwBDUEZvon1tEBS5sLPzqpN9dNdjQotPN\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetApprovalHook.sol\":{\"keccak256\":\"0x592e95d159494421c6b1bcb362d0cee1df0132921697351304e9cd7af4fbd386\",\"urls\":[\"bzz-raw://5bebfd5fa67c1b6ea16fa2e76e9520e9dfe52a579f48dd94d0c2ec45f78ad178\",\"dweb:/ipfs/QmRUawEGtfYoYSHmHELGhvJoWuMsxLPKtqAXgsrb7fJboP\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesetDataHook.sol\":{\"keccak256\":\"0x42f5ceea4440a568ab5104fc5fe35e1d9848d3b8ab313f27cfed730aac29d142\",\"urls\":[\"bzz-raw://698789955c6427f955c906db984bc9967329521d3a42b8cd8ea56b456325f186\",\"dweb:/ipfs/Qma1fCnZHymkCEE438KV2NL3F2t6zTgvRzn9FoFHTNhuY2\"],\"license\":\"MIT\"},\"src/interfaces/IJBRulesets.sol\":{\"keccak256\":\"0xf287c7a4a162cd58084ed10ee5f9f31c992addff0ce2f2ac7e810cc393546f30\",\"urls\":[\"bzz-raw://c851b72de52c3ceb73c6b1849ad0cc7c0832fd126ee52cc838a163ab6d3055b8\",\"dweb:/ipfs/Qmbv6k6pSeNMwZoTUKzDNb18DMGR8DboRMrYQBydATuVZw\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplitHook.sol\":{\"keccak256\":\"0xeb8dfac7a4b81897a1c3b5d0d853a406bcff33720fb187d5ca5bb3dcc0ba3a12\",\"urls\":[\"bzz-raw://36aaeef6107cfe5b0127e063ea215aac7200f8af02e28a48e61111abd3254688\",\"dweb:/ipfs/QmQ8yQANXnhQCAWBGKsKCDsJ3A8hnTKNg5tyo79GfWXTcV\"],\"license\":\"MIT\"},\"src/interfaces/IJBSplits.sol\":{\"keccak256\":\"0x424e6d1189b9ba7a5d441e7675ae09ff893c13c62b9ddde4dd6bc2690e96c6f3\",\"urls\":[\"bzz-raw://7e30ed7ab1daf20ff324aacfef7150a243b5db496eceaf032c7012ccb3c4227d\",\"dweb:/ipfs/QmRj5EZKmDjJy8tpvKbpz8vPSKHR5C9Q5ENe7oSLij4H8M\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminalStore.sol\":{\"keccak256\":\"0xd402c60029e8235816b19c28ede20d5cf69ebe1e330642b121d27769e35867d8\",\"urls\":[\"bzz-raw://c1c10c5c451e0203790598f24e35ae6f4c629ff2d4b4124575a7178df8ec3ab2\",\"dweb:/ipfs/Qma3pon2gMNgEhUbaVJ15oxMt11CtqLc7AWCSZGBevUwiJ\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/libraries/JBCashOuts.sol\":{\"keccak256\":\"0x3e4e5b16037dad09dc5224833a46226a555531f982fbdd338f1a519380e615e7\",\"urls\":[\"bzz-raw://79b8e4d372f538e0e455c0d497c21613447d321dea75850321ee347c5563ef7e\",\"dweb:/ipfs/QmcS6eKZYN7VKKxkpz86NRZohgR84M6GTzn1NnCY7ux4ee\"],\"license\":\"MIT\"},\"src/libraries/JBConstants.sol\":{\"keccak256\":\"0x4dd0f809f1f10cf961e85632e5f3ea5e49716b104a0e8bc4d8ccc2081e9d007a\",\"urls\":[\"bzz-raw://09432ec01de81f7c295579fa3176610776cb186fba4c50d799108a18f14e5cc6\",\"dweb:/ipfs/QmS52c525xJui5u1xoY76PTq2n1pvnUzThBK38A1fsWdLp\"],\"license\":\"MIT\"},\"src/libraries/JBFixedPointNumber.sol\":{\"keccak256\":\"0x687bdcb1353e2d29f1bd38bbadeb4ab0f2cbb351688f77e56365a25044577b53\",\"urls\":[\"bzz-raw://ad7f8756cf5f209cff9fbe8a65e799e29c159da55a3a2d532298acfb9d567311\",\"dweb:/ipfs/QmZMCox7uDwZrnbiZnZheizrG6PAisuHVuJgXK9rHn7PKU\"],\"license\":\"MIT\"},\"src/libraries/JBRulesetMetadataResolver.sol\":{\"keccak256\":\"0x3ed84aa51ce7ee94c65c507bb6f209fef4ae89c7446a2ed841602a235afcf43d\",\"urls\":[\"bzz-raw://cbeb6faae79112f85366ee53ad5c65f41a68f799912a5f09b0d6a49f8d9df647\",\"dweb:/ipfs/QmdEyZ6QF5q9UHMwbxWA9RrFwtL5iYHRydCAnHdKqqukDB\"],\"license\":\"MIT\"},\"src/libraries/JBSurplus.sol\":{\"keccak256\":\"0x21df719e4cd81ddf42fb8aa3a3e9b4db5fb67856a98271f0fdf943bb3dd1ae31\",\"urls\":[\"bzz-raw://7291a580c5ed5c8b12c7b34d37dc711a31c2045a9afbd00f2907d5acbcb21704\",\"dweb:/ipfs/QmSMqwPcmgutfBK6x7Yud7ZQdCQQrRNHvCzqDaBrix9PF5\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterCashOutRecordedContext.sol\":{\"keccak256\":\"0xa1acdb1a5670f66f730e71f8eff120766b6f5c934e6cd699c7f1a7cc93adf658\",\"urls\":[\"bzz-raw://a9c7655c9c42b30132688b395251748c809c334370ee584cb9bac46e1fb8f162\",\"dweb:/ipfs/QmbMV1wg1Fm236HaA6nnMSvRkzeYCKPRhMYDbqkAxieY7x\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBBeforeCashOutRecordedContext.sol\":{\"keccak256\":\"0x7b2119f3e0725becc552ed5dcfa51683960a8772550c95ac5e2f75240ced367c\",\"urls\":[\"bzz-raw://03369dd07a9126ce453d83ac409919326f0aaa48ff9eac5c703092b3824d79c9\",\"dweb:/ipfs/Qmc1QKw6FfmeBD372RnDyeW27QyzEUjMX5up5rk8SHRYGa\"],\"license\":\"MIT\"},\"src/structs/JBBeforePayRecordedContext.sol\":{\"keccak256\":\"0xbc98b968d84be2f0ddbb24240723c7179ec9c5e02e5fbd5843dd0e76623a3ea5\",\"urls\":[\"bzz-raw://1310e522696a9fc6f7f96b04c293fab3b4cf1e722bdbb7aa1eec7b3ecc25402f\",\"dweb:/ipfs/QmTYiijDJRuQcMhLrmpbHzHAQFPq6jurPP5HjyYtnzbpnK\"],\"license\":\"MIT\"},\"src/structs/JBCashOutHookSpecification.sol\":{\"keccak256\":\"0x67a6e781019979e626eaa81d84a800b2656603c23ae455e15d0fa1a6f03c1736\",\"urls\":[\"bzz-raw://b43ce54447dda62d449a1e3575a9e4cb9c5a2adb41b45423dcefeb7d9afe8336\",\"dweb:/ipfs/QmW77REnQcvsfv4gwTLj2CyynmaGC3a6om7zCFWmERhrPY\"],\"license\":\"MIT\"},\"src/structs/JBCurrencyAmount.sol\":{\"keccak256\":\"0x7f321bbcbd13abfbc8f0d08a5adaaf8ef312db5bb899012fcffb6170fbb962a9\",\"urls\":[\"bzz-raw://bf9301ef1dbb3abda7b492585377617508ba048c6170f21a5e7d2b3c034eb384\",\"dweb:/ipfs/QmcetEFxSYLLNSZzPBpNn3Fc8sFcrFE8A8h12ZSj2tLgxD\"],\"license\":\"MIT\"},\"src/structs/JBFundAccessLimitGroup.sol\":{\"keccak256\":\"0x9fdaa8d017b72da25f583700a444a86849df053f7fb8eac874ec5139bcf651e5\",\"urls\":[\"bzz-raw://c8e44c49ee444a98424a0dbeb6897a76a0bf00d88a613f62ac2012afdac754ee\",\"dweb:/ipfs/QmdYkAiRi5bXM1YYNkc7BiqimHSFodMGn1cjHR5hcpm4xH\"],\"license\":\"MIT\"},\"src/structs/JBPayHookSpecification.sol\":{\"keccak256\":\"0x955f0bfca97300b9e5927dc181753830ee362f83fa9ca32a90daade32aa0cfd5\",\"urls\":[\"bzz-raw://f517af1597c7c40f8d3da53f7a6684a3e162950a16559d6bf6ea3b727bb11546\",\"dweb:/ipfs/QmRWo2ZTYXmVZTzNJDYhsJNsEaHphjpUfx9eNz2cciyz86\"],\"license\":\"MIT\"},\"src/structs/JBRuleset.sol\":{\"keccak256\":\"0x2d1f0a8457e94addae51a8222b1837e372847624fde96bb3178e7aee52ab2b24\",\"urls\":[\"bzz-raw://bbb1478e8f5d1c20f981e5a0d5e526d002add1e05ddced87ccd45543ed00c9e4\",\"dweb:/ipfs/QmZkgaYdwkbnvW2MGwVe9FeHjac8XyZTP1YZcWUApiGZgE\"],\"license\":\"MIT\"},\"src/structs/JBRulesetConfig.sol\":{\"keccak256\":\"0xeba54f25ad84b9c6009f62ded187b58f97e0822e9b19ab0986aee6603ca5400a\",\"urls\":[\"bzz-raw://5a51743febf78f2ede92d32a2b18c3c5f06f02c413c2d01f28dc296840b068ef\",\"dweb:/ipfs/QmVSRDtB7xUgaLGW5tSJr7PhW5XPxkWg226Sk2g75qWpxh\"],\"license\":\"MIT\"},\"src/structs/JBRulesetMetadata.sol\":{\"keccak256\":\"0x318f0b75275c3822df53a02e98782c9e98e7961116f2ad66a528c6adcd14c946\",\"urls\":[\"bzz-raw://d60f62390e43d182bfe875d1ac57e9de10426d81038ba7d8c3727b22392299e2\",\"dweb:/ipfs/QmUtE6fcP25wEhVJNEbrPHyFPkg5hp2PFf5xcwBeHPmNAf\"],\"license\":\"MIT\"},\"src/structs/JBRulesetWithMetadata.sol\":{\"keccak256\":\"0x1bcfadf20488f6df65227f8d4d0fbf9b7539456a2389567f7fe3900d23289bc3\",\"urls\":[\"bzz-raw://0a15c399a71e5373f8c0484c6d6b83521eda31e063a2c53e4c5cec4e74550343\",\"dweb:/ipfs/QmQwi8zkjoTVXbK89NeETYimWCacTrNsesJdpLSvGdqMPX\"],\"license\":\"MIT\"},\"src/structs/JBSplit.sol\":{\"keccak256\":\"0x0e1351e80cf9967caee90094712a4fc884a83f07df23a844d8cb33ebcd00721e\",\"urls\":[\"bzz-raw://19d5793c08834f2ec1d6942bd43d05042b0ecc351a57235d748a8f2ff74b6638\",\"dweb:/ipfs/QmUWjyNg7x62KsvMwAzNdpmwqCo5qK5ip9pLdshj9B2Kbf\"],\"license\":\"MIT\"},\"src/structs/JBSplitGroup.sol\":{\"keccak256\":\"0x8dc98fa9e730bee8bcc0a8acf1bc4db1c9b0edf307d969c9c9caa4d6b8d856d9\",\"urls\":[\"bzz-raw://66f4306e0e69c82033927952564fd617e7c4b29aa8b165d5b53a0ebe3109ea12\",\"dweb:/ipfs/QmQqN1u7FHAdEtEZNRcKvZwYtXEQVQnLd6FMzHESP7wDtx\"],\"license\":\"MIT\"},\"src/structs/JBSplitHookContext.sol\":{\"keccak256\":\"0x1cef82bf434f91d518092ea7e57db4a72ce7654f48a7db9bf44882900b6b6623\",\"urls\":[\"bzz-raw://cc5012008ab7e74cf766fe1c202a23e3a73365356bcf1e0b04ec01baf21b204b\",\"dweb:/ipfs/QmSwJvd6Yrg9XZMhjquBcak5sfUswbR5nPEuJBfpjM54VT\"],\"license\":\"MIT\"},\"src/structs/JBTerminalConfig.sol\":{\"keccak256\":\"0x9e31505080d3754b6d7db96095b0545930ef6dbc035b91fcc32fdc76a0e7c2a5\",\"urls\":[\"bzz-raw://f7702ab33a1b713c37e5397a55d8ef089289f4da8034cfe9622cbc69a98c47de\",\"dweb:/ipfs/QmXyiXps4aJyiM7vtDC373QUoqwB4DMETaZzC5cZPJKaAK\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x7769087dcaB8C6124a4305511b90582431F10e53", - "0x8De478a6071AD66Bf99c770AEA0cEdcDDDa72F43" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "0xC052725ff9888CE3148Aa8bFB5063f1a5028946D" ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003b9638038062003b9683398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613a1b6200017b600039600081816103150152818161035901528181610ad801528181610bcc015281816111da015281816114de0152818161164001528181611ab9015261202601526000818161015701528181610c7801528181611e9d015281816123ca01526126e401526000818161023e015281816104b60152818161057701528181610f89015281816112d80152818161137c0152818161157d015281816118cc015261242c0152613a1b6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f000000000000000000000000000000000000000000000000000000000000000081565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638e86e7a411610097578063c0920f3811610066578063c0920f38146102db578063c59dfadb146102ee578063d4a1b4b114610310578063d60d1a091461033757600080fd5b80638e86e7a4146102605780639e0a5d5914610273578063ab5f3a0114610286578063b7cc53b31461029957600080fd5b8063467f4cb9116100d3578063467f4cb9146101b257806351fc1735146101e2578063568ecef1146101f757806388bc2ef31461023957600080fd5b80630d346b811461010557806319781e23146101315780631eabcd341461015257806330795ef814610191575b600080fd5b61011861011336600461296b565b61034a565b6040516101289493929190612b51565b60405180910390f35b61014461013f366004612c04565b610ab5565b604051908152602001610128565b6101797f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5381565b6040516001600160a01b039091168152602001610128565b6101a461019f366004612c34565b610bab565b604051610128929190612c70565b6101446101c0366004612c8d565b6000602081815293815260408082208552928152828120909352825290205481565b6101f56101f0366004612ccf565b61114c565b005b610144610205366004612d07565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101797f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61014461026e366004612d59565b6111b7565b610144610281366004612ded565b6114a3565b610144610294366004612e1f565b611575565b6101446102a7366004612d07565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101a46102e9366004612c34565b61161f565b6103016102fc366004612e4b565b611a8d565b60405161012893929190612f08565b6101797f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4381565b610144610345366004612fb2565b611fb9565b6103526127ca565b60008060607f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b03166343a266c28b6040518263ffffffff1660e01b81526004016103a591815260200190565b61012060405180830381865afa1580156103c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103e79190613079565b61010081015190945060009060501c6001908116146104925761048d338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610453576104446060830286013681900381019061313b565b81526020019060010190610427565b5050505050888d602001602081019061046c919061318d565b60ff168e604001602081019061048291906131a8565b63ffffffff166120b2565b610553565b60405163d175415360e01b8152600481018c9052610553908c906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa1580156104fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261052591908101906131e8565b61053560408d0160208e0161318d565b60ff1661054860608e0160408f016131a8565b63ffffffff16612114565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e29190613281565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b815260040161060f91815260200190565b602060405180830381865afa15801561062c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610650919061329e565b9050808b1115610682576040516376fd574b60e11b8152600481018c9052602481018290526044015b60405180910390fd5b61010086015160521c60019081161480156106b5575060006106a987610100015160531c90565b6001600160a01b031614155b1561084c576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e600001602081019061073191906132b7565b6001600160a01b031681526020018e6020016020810190610752919061318d565b60ff1681526020018e604001602081019061076d91906131a8565b63ffffffff168152602001868152508152602001610798896101000151600160509190911c81161490565b151581526020016107ae89610100015160141c90565b61ffff16815260200189905290506107cb87610100015160531c90565b6001600160a01b031663cd817cd0826040518263ffffffff1660e01b81526004016107f691906132d4565b600060405180830381865afa158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b91908101906133ef565b919e509196509450915061085c9050565b61010086015160141c61ffff1693505b81156108715761086e828c83876121d6565b94505b82518590156108ca57835160005b818110156108c757600086828151811061089b5761089b61350f565b6020026020010151602001519050806000146108be576108bb818561353b565b93505b5060010161087f565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c600001602081019061091491906132b7565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156109cc5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061098791906132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b8152600401610679929190918252602082015260400190565b8015610aa45780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a1d91906132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d6000016020810190610a8991906132b7565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b449190613079565b61010081015190915060481c600190811614610b7357604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610bb36127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015610c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c409190613079565b9150610c5260608601604087016131a8565b63ffffffff168314610d3457610d2f84610c6e6012600a613638565b6001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e5316633be273fa8a88610caf60608d0160408e016131a8565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a919061329e565b61223e565b610d36565b835b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d51579050509050610d8f3687900387018761313b565b81600081518110610da257610da261350f565b60200260200101819052506000610ddc338984878b6020016020810190610dc9919061318d565b60ff1661048260608e0160408f016131a8565b905080831115610e0957604051634fd2cdcd60e11b81526004810184905260248101829052604401610679565b336000908152602081815260408083208b84528252822085929091610e30908b018b6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054610e5b9190613644565b336000908152602081815260408083208c8452825282209190610e80908b018b6132b7565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610ec3908c018c6132b7565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a8252909252902054610f07919061353b565b3360009081526002602090815260408083208d84528252822092935083929190610f33908c018c6132b7565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff49190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611031573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110559190613281565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061107d91906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa1580156110e5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611109919061329e565b905080821180611117575080155b1561113f57604051631913147f60e01b81526004810183905260248101829052604401610679565b5050505094509492505050565b3360009081526020818152604080832086845282528083206001600160a01b038616845290915290205461118190829061353b565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b6040516321d1336160e11b81526004810188905260009081906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611222573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112469190613079565b90506000836112b4576112af8b8b8b8b808060200260200160405190810160405280939291908181526020016000905b828210156112a2576112936060830286013681900381019061313b565b81526020019060010190611276565b5050505050858b8b6120b2565b61134e565b60405163d175415360e01b8152600481018b905261134e908b906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad22169063d175415390602401600060405180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261134791908101906131e8565b8989612114565b90508060000361136357600092505050611497565b604051632eec7b5560e11b8152600481018b90526000907f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156113cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ef9190613281565b6001600160a01b0316634da781a98c6040518263ffffffff1660e01b815260040161141c91815260200190565b602060405180830381865afa158015611439573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145d919061329e565b9050808611156114735760009350505050611497565b61149182878361148887610100015160141c90565b61ffff166121d6565b93505050505b98975050505050505050565b6000816000036114b55750600061156d565b828411156114c55750600061156d565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613079565b905061156983868661148885610100015160141c90565b9150505b949350505050565b6000611615847f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031663d1754153876040518263ffffffff1660e01b81526004016115c991815260200190565b600060405180830381865afa1580156115e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160e91908101906131e8565b8585612114565b90505b9392505050565b6116276127ca565b6040516321d1336160e11b8152600481018690526000907f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b0316906343a266c29060240161012060405180830381865afa158015611690573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b49190613079565b91506116c660608601604087016131a8565b63ffffffff1683146116e7576116e284610c6e6012600a613638565b6116e9565b835b336000908152602081815260408083208a84528252822092935061170f908801886132b7565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561175e57336000908152602081815260408083208984528252822083929091610987908901896132b7565b336000908152602081815260408083208984528252822083929091611785908901896132b7565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b835284529181209390910392916117c7908901896132b7565b6001600160a01b03168152602080820192909252604090810160009081209390935533835260018252808320898452825282208691839061180a908a018a6132b7565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff168252835281812088825290925290205461184c919061353b565b3360009081526001602090815260408083208b84528252822092935083929190611878908a018a6132b7565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119379190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611974573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119989190613281565b6001600160a01b0316638ca53ccd898660200151338b60000160208101906119c091906132b7565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061329e565b905080821180611a5a575080155b15611a82576040516306dfadfd60e21b81526004810183905260248101829052604401610679565b505094509492505050565b611a956127ca565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f4316906343a266c29060240161012060405180830381865afa158015611b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b259190613079565b805190935065ffffffffffff16600003611b525760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611b7e576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060511c6001908116148015611bb457506000611ba885610100015160531c90565b6001600160a01b031614155b15611d0e5760408051610120810182523381526001600160a01b038c1660208201526000918101611bea368d90038d018d613657565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b03168152602001611c4187610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611c9385610100015160531c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611cbe91906136d2565b600060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d0391908101906137b0565b93509150611d1e9050565b5060a08301516001600160701b03165b815160608a0135908015611da45760005b81811015611da2576000858281518110611d4b57611d4b61350f565b602002602001015160200151905080600014611d995783811115611d8c576040516301a3406160e01b81526004810182905260248101859052604401610679565b611d968185613644565b93505b50600101611d2f565b505b508960600135600003611dbd575060009250611fad9050565b8015611e5557336000908152602081815260408083208c84528252822083929091611dea908e018e6132b7565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611e15919061353b565b336000908152602081815260408083208d8452825282209190611e3a908e018e6132b7565b6001600160a01b031681526020810191909152604001600020555b81600003611e69575060009250611fad9050565b6000611e7a86610100015160241c90565b63ffffffff16611e9060608d0160408e016131a8565b63ffffffff1614611f7b577f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b0316633be273fa8b8d6040016020810190611ede91906131a8565b6101008a015160241c8f6020016020810190611efa919061318d565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f76919061329e565b611f96565b611f8b60408c0160208d0161318d565b611f9690600a6138bd565b9050611fa78b60600135848361223e565b94505050505b96509650969350505050565b60006120a587878787808060200260200160405190810160405280939291908181526020016000905b8282101561200e57611fff6060830286013681900381019061313b565b81526020019060010190611fe2565b50506040516321d1336160e11b8152600481018e90527f0000000000000000000000008de478a6071ad66bf99c770aea0cedcddda72f436001600160a01b031693506343a266c29250602401905061012060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190613079565b87876120b2565b90505b9695505050505050565b8351600090815b818110156121085760006120ea8a8a8a85815181106120da576120da61350f565b60200260200101518a8a8a612312565b905080156120ff576120fc818561353b565b93505b506001016120b9565b50509695505050505050565b8251600090815b818110156121cc578581815181106121355761213561350f565b602090810291909101015160405163cc68012760e01b81526004810189905260248101879052604481018690526001600160a01b039091169063cc68012790606401602060405180830381865afa158015612194573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b8919061329e565b6121c2908461353b565b925060010161211b565b5050949350505050565b6000816000036121e85750600061156d565b8284106121f657508361156d565b600061220386868661223e565b905061270f19830161221657905061156d565b6115698161223061222986612710613644565b888861223e565b61223a908661353b565b6127105b60008080600019858709858702925082811083820303915050806000036122785783828161226e5761226e6138cc565b0492505050611618565b8381106122a957604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610679565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146123665761236181866020015160ff168561276d565b612368565b805b9050801580612380575081856040015163ffffffff16145b61240657612401816123946012600a613638565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e536001600160a01b031690633be273fa90608401610ce9565b612408565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015612473573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124979190613281565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f89190613281565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612565573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261258d91908101906138e2565b805190915060005b818110156127605760008382815181106125b1576125b161350f565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff168252909352909120548151919250612626916001600160e01b0316613644565b6001600160e01b03168152602089015160ff1687146126635761265e81600001516001600160e01b03168a6020015160ff168961276d565b612666565b80515b6001600160e01b03168082521580612687575085816020015163ffffffff16145b612718578051612713906001600160e01b03166126a66012600a613638565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000007769087dcab8c6124a4305511b90582431f10e531690633be273fa90608401610ce9565b61271b565b80515b6001600160e01b031680825285111561274a578051612743906001600160e01b031686613644565b9450612757565b60009450505050506120a8565b50600101612595565b5050509695505050505050565b600082820361277d575082611618565b828211156127ab5761278f8383613644565b61279a90600a613638565b6127a490856139ac565b9050611618565b6127b58284613644565b6127c090600a613638565b6127a490856139c3565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b038116811461282b57600080fd5b50565b60006060828403121561284057600080fd5b50919050565b60008083601f84011261285857600080fd5b5081356001600160401b0381111561286f57600080fd5b60208301915083602060608302850101111561288a57600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b03811182821017156128ca576128ca612891565b60405290565b604051606081016001600160401b03811182821017156128ca576128ca612891565b604080519081016001600160401b03811182821017156128ca576128ca612891565b604051601f8201601f191681016001600160401b038111828210171561293c5761293c612891565b604052919050565b60006001600160401b0382111561295d5761295d612891565b50601f01601f191660200190565b6000806000806000806000610100888a03121561298757600080fd5b873561299281612816565b965060208801359550604088013594506129af8960608a0161282e565b935060c08801356001600160401b03808211156129cb57600080fd5b6129d78b838c01612846565b909550935060e08a01359150808211156129f057600080fd5b508801601f81018a13612a0257600080fd5b8035612a15612a1082612944565b612914565b8181528b6020838501011115612a2a57600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151612a8e606084018265ffffffffffff169052565b506080810151612aa6608084018263ffffffff169052565b5060a0810151612ac160a08401826001600160701b03169052565b5060c0810151612ad960c084018263ffffffff169052565b5060e0810151612af460e08401826001600160a01b03169052565b5061010090810151910152565b60005b83811015612b1c578181015183820152602001612b04565b50506000910152565b60008151808452612b3d816020860160208601612b01565b601f01601f19169290920160200192915050565b6000610180808301612b638489612a4f565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612bf45787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612be081880183612b25565b978501979650505090820190600101612b9c565b50929a9950505050505050505050565b60008060408385031215612c1757600080fd5b823591506020830135612c2981612816565b809150509250929050565b60008060008060c08587031215612c4a57600080fd5b84359350612c5b866020870161282e565b939693955050505060808201359160a0013590565b6101408101612c7f8285612a4f565b826101208301529392505050565b600080600060608486031215612ca257600080fd5b8335612cad81612816565b9250602084013591506040840135612cc481612816565b809150509250925092565b600080600060608486031215612ce457600080fd5b833592506020840135612cf681612816565b929592945050506040919091013590565b600080600080600060a08688031215612d1f57600080fd5b8535612d2a81612816565b9450602086013593506040860135612d4181612816565b94979396509394606081013594506080013592915050565b60008060008060008060008060e0898b031215612d7557600080fd5b8835612d8081612816565b97506020890135965060408901356001600160401b03811115612da257600080fd5b612dae8b828c01612846565b909750955050606089013593506080890135925060a0890135915060c08901358015158114612ddc57600080fd5b809150509295985092959890939650565b60008060008060808587031215612e0357600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e3457600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e6657600080fd5b8735612e7181612816565b96506080601f1982011215612e8557600080fd5b5060208701945060a0870135935060c0870135612ea181612816565b925060e08701356001600160401b0380821115612ebd57600080fd5b818901915089601f830112612ed157600080fd5b813581811115612ee057600080fd5b8a6020828501011115612ef257600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f1a8488612a4f565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fa35787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612f8f81880183612b25565b978501979650505090820190600101612f4b565b50929998505050505050505050565b60008060008060008060a08789031215612fcb57600080fd5b8635612fd681612816565b95506020870135945060408701356001600160401b03811115612ff857600080fd5b61300489828a01612846565b979a9699509760608101359660809091013595509350505050565b805165ffffffffffff8116811461303557600080fd5b919050565b63ffffffff8116811461282b57600080fd5b80516130358161303a565b80516001600160701b038116811461303557600080fd5b805161303581612816565b6000610120828403121561308c57600080fd5b6130946128a7565b61309d8361301f565b81526130ab6020840161301f565b60208201526130bc6040840161301f565b60408201526130cd6060840161301f565b60608201526130de6080840161304c565b60808201526130ef60a08401613057565b60a082015261310060c0840161304c565b60c082015261311160e0840161306e565b60e0820152610100928301519281019290925250919050565b803560ff8116811461303557600080fd5b60006060828403121561314d57600080fd5b6131556128d0565b823561316081612816565b815261316e6020840161312a565b602082015260408301356131818161303a565b60408201529392505050565b60006020828403121561319f57600080fd5b6116188261312a565b6000602082840312156131ba57600080fd5b81356116188161303a565b60006001600160401b038211156131de576131de612891565b5060051b60200190565b600060208083850312156131fb57600080fd5b82516001600160401b0381111561321157600080fd5b8301601f8101851361322257600080fd5b8051613230612a10826131c5565b81815260059190911b8201830190838101908783111561324f57600080fd5b928401925b8284101561327657835161326781612816565b82529284019290840190613254565b979650505050505050565b60006020828403121561329357600080fd5b815161161881612816565b6000602082840312156132b057600080fd5b5051919050565b6000602082840312156132c957600080fd5b813561161881612816565b602081526132ee6020820183516001600160a01b03169052565b6000602083015161330a60408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161337560e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a08084015261156d6101c0840182612b25565b600082601f8301126133bb57600080fd5b81516133c9612a1082612944565b8181528460208386010111156133de57600080fd5b61156d826020830160208701612b01565b6000806000806080858703121561340557600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561343157600080fd5b818701915087601f83011261344557600080fd5b8151613453612a10826131c5565b8082825260208201915060208360051b86010192508a83111561347557600080fd5b602085015b838110156134ff5780518581111561349157600080fd5b86016060818e03601f190112156134a757600080fd5b6134af6128d0565b60208201516134bd81612816565b8152604082015160208201526060820151878111156134db57600080fd5b6134ea8f6020838601016133aa565b6040830152508452506020928301920161347a565b50979a9699509497505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561354e5761354e613525565b92915050565b600181815b8085111561358f57816000190482111561357557613575613525565b8085161561358257918102915b93841c9390800290613559565b509250929050565b6000826135a65750600161354e565b816135b35750600061354e565b81600181146135c957600281146135d3576135ef565b600191505061354e565b60ff8411156135e4576135e4613525565b50506001821b61354e565b5060208310610133831016604e8410600b8410161715613612575081810a61354e565b61361c8383613554565b806000190482111561363057613630613525565b029392505050565b60006116188383613597565b8181038181111561354e5761354e613525565b60006080828403121561366957600080fd5b604051608081018181106001600160401b038211171561368b5761368b612891565b604052823561369981612816565b81526136a76020840161312a565b602082015260408301356136ba8161303a565b60408201526060928301359281019290925250919050565b602081526136ec6020820183516001600160a01b03169052565b6000602083015161370860408401826001600160a01b03169052565b50604083015161374b606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506137806101208501836001600160a01b03169052565b60c085015161014085015260e085015161016085015284015161018080850152905061156d6101a0840182612b25565b600080604083850312156137c357600080fd5b825191506020808401516001600160401b03808211156137e257600080fd5b818601915086601f8301126137f657600080fd5b8151613804612a10826131c5565b81815260059190911b8301840190848101908983111561382357600080fd5b8585015b838110156138ac5780518581111561383f5760008081fd5b86016060818d03601f19018113156138575760008081fd5b61385f6128d0565b8983015161386c81612816565b815260408301518a82015290820151908782111561388a5760008081fd5b6138988e8b848601016133aa565b604082015285525050918601918601613827565b508096505050505050509250929050565b600061161860ff841683613597565b634e487b7160e01b600052601260045260246000fd5b600060208083850312156138f557600080fd5b82516001600160401b0381111561390b57600080fd5b8301601f8101851361391c57600080fd5b805161392a612a10826131c5565b81815260069190911b8201830190838101908783111561394957600080fd5b928401925b8284101561327657604084890312156139675760008081fd5b61396f6128f2565b84516001600160e01b03811681146139875760008081fd5b8152848601516139968161303a565b818701528252604093909301929084019061394e565b808202811582820484141761354e5761354e613525565b6000826139e057634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220fd6552c642f12453f4cc6d6438d5ccfef877b40c48c2e5b8bcc4f329a6db1c6164736f6c63430008170033", + "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c81565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d81565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c16633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d6001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d16906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c6001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f0000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c1690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1226,26 +1221,25 @@ "rulesets": "A contract storing and managing project rulesets." } }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { "details": "The returned amount in terms of the specified `terminal`'s base currency.The returned amount is represented as a fixed point number with the same amount of decimals as the specified terminal.", "params": { - "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed", + "accountingContexts": "The accounting contexts of the surplus terminal tokens that would be reclaimed. Pass an empty array to use all of the project's accounting contexts.", + "cashOutCount": "The number of tokens that would be cashed out, as a fixed point number with 18 decimals.", "currency": "The currency that the resulting number will be in terms of.", "decimals": "The number of decimals to include in the resulting fixed point number.", - "projectId": "The ID of the project whose tokens would be redeemed.", - "terminal": "The terminal that would be redeemed from. If `useTotalSurplus` is true, this is ignored.", - "tokensRedeemed": "The number of tokens that would be redeemed, as a fixed point number with 18 decimals.", - "useTotalSurplus": "Whether the total surplus should be summed across all of the project's terminals. If false, only the `terminal`'s surplus is used." + "projectId": "The ID of the project whose tokens would be cashed out.", + "terminals": "The terminals that would be cashed out from. If this is the zero address, surplus within all the project's terminals are considered." }, "returns": { - "_0": "The amount of surplus terminal tokens that would be reclaimed by redeeming `tokensRedeemed` tokens." + "_0": "The amount of surplus terminal tokens that would be reclaimed by cashing out `cashOutCount` tokens." } }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { "params": { - "projectId": "The ID of the project whose project tokens would be redeemed.", + "cashOutCount": "The number of project tokens that would be cashed out, as a fixed point number with 18 decimals.", + "projectId": "The ID of the project whose project tokens would be cashed out.", "surplus": "The total terminal token surplus amount, as a fixed point number.", - "tokensRedeemed": "The number of project tokens that would be redeemed, as a fixed point number with 18 decimals.", "totalSupply": "The total project token supply, as a fixed point number with 18 decimals." }, "returns": { @@ -1282,6 +1276,23 @@ "token": "The token being added to the balance." } }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "details": "Cashs out the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, cashs out tokens along a cash out bonding curve that is a function of the number of tokens being burned.", + "params": { + "accountingContext": "The accounting context of the token being reclaimed by the cash out.", + "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", + "cashOutCount": "The number of project tokens to cash out, as a fixed point number with 18 decimals.", + "holder": "The account that is cashing out tokens.", + "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", + "projectId": "The ID of the project being cashing out from." + }, + "returns": { + "cashOutTaxRate": "The cash out tax rate influencing the reclaim amount.", + "hookSpecifications": "A list of cash out hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", + "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", + "ruleset": "The ruleset during the cash out was made during, as a `JBRuleset` struct. This ruleset will have a cash out tax rate provided by the cash out hook if applicable." + } + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "details": "Mints the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, mints tokens in proportion with the amount paid.", "params": { @@ -1309,23 +1320,6 @@ "ruleset": "The ruleset the payout was made during, as a `JBRuleset` struct." } }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "details": "Redeems the project's tokens according to values provided by the ruleset's data hook. If the ruleset has no data hook, redeems tokens along a redemption bonding curve that is a function of the number of tokens being burned.", - "params": { - "accountingContext": "The accounting context of the token being reclaimed by the redemption.", - "balanceAccountingContexts": "The accounting contexts of the tokens whose balances should contribute to the surplus being reclaimed from.", - "holder": "The account that is redeeming tokens.", - "metadata": "Bytes to send to the data hook, if the project's current ruleset specifies one.", - "projectId": "The ID of the project being redeemed from.", - "redeemCount": "The number of project tokens to redeem, as a fixed point number with 18 decimals." - }, - "returns": { - "hookSpecifications": "A list of redeem hooks, including data and amounts to send to them. The terminal should fulfill these specifications.", - "reclaimAmount": "The amount of tokens reclaimed from the terminal, as a fixed point number with 18 decimals.", - "redemptionRate": "The redemption rate influencing the reclaim amount.", - "ruleset": "The ruleset during the redemption was made during, as a `JBRuleset` struct. This ruleset will have a redemption rate provided by the redemption hook if applicable." - } - }, "recordTerminalMigration(uint256,address)": { "params": { "projectId": "The ID of the project being migrated.", @@ -1366,11 +1360,11 @@ "balanceOf(address,uint256,address)": { "notice": "A project's balance of a specific token within a terminal." }, - "currentReclaimableSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256,uint256,bool)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by redeeming a given number of tokens, based on the total token supply and total surplus." + "currentReclaimableSurplusOf(uint256,uint256,address[],(address,uint8,uint32)[],uint256,uint256)": { + "notice": "Returns the number of surplus terminal tokens that would be reclaimed from a terminal by cashing out a given number of tokens, based on the total token supply and total surplus." }, "currentReclaimableSurplusOf(uint256,uint256,uint256,uint256)": { - "notice": "Returns the number of surplus terminal tokens that would be reclaimed by redeeming a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." + "notice": "Returns the number of surplus terminal tokens that would be reclaimed by cashing out a given project's tokens based on its current ruleset and the given total project token supply and total terminal token surplus." }, "currentSurplusOf(address,uint256,(address,uint8,uint32)[],uint256,uint256)": { "notice": "Gets the current surplus amount in a terminal for a specified project." @@ -1381,15 +1375,15 @@ "recordAddedBalanceFor(uint256,address,uint256)": { "notice": "Records funds being added to a project's balance." }, + "recordCashOutFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { + "notice": "Records a cash out from a project." + }, "recordPaymentFrom(address,(address,uint8,uint32,uint256),uint256,address,bytes)": { "notice": "Records a payment to a project." }, "recordPayoutFor(uint256,(address,uint8,uint32),uint256,uint256)": { "notice": "Records a payout from a project." }, - "recordRedemptionFor(address,uint256,uint256,(address,uint8,uint32),(address,uint8,uint32)[],bytes)": { - "notice": "Records a redemption from a project." - }, "recordTerminalMigration(uint256,address)": { "notice": "Records the migration of funds from this store." }, @@ -1405,7 +1399,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTerminalStore.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/JBTokens.json b/deployments/nana-core-testnet/sepolia/JBTokens.json index 5e330079..459c5ad7 100644 --- a/deployments/nana-core-testnet/sepolia/JBTokens.json +++ b/deployments/nana-core-testnet/sepolia/JBTokens.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4", + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", "contractName": "JBTokens", - "address": "0xfF5Dd171BdA8bC78915B9a58D907Df7c10CE4E5c", + "address": "0x94Db7C71D9E4bcDE99686bE9570C68BF12708D3e", "abi": [ { "type": "constructor", @@ -554,9 +554,25 @@ }, { "type": "error", - "name": "ERC1167FailedCreateClone", + "name": "FailedDeployment", "inputs": [] }, + { + "type": "error", + "name": "InsufficientBalance", + "inputs": [ + { + "name": "balance", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "needed", + "type": "uint256", + "internalType": "uint256" + } + ] + }, { "type": "error", "name": "JBControlled_ControllerUnauthorized", @@ -675,203 +691,338 @@ ] } ], - "solcInputHash": "b89bde0fe29395f67edeac33d37789f7", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "contractAddress": null, - "cumulativeGasUsed": "27455565", + "cumulativeGasUsed": "17323969", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "137375905", - "gasUsed": "10570440", - "hash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "index": 240, + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 266, + "index": 142, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xaa6479e5b718cc047f07bfb708286a56b64dbef8549b40e9b18fa52b6f33d125" + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 267, + "index": 143, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x0000000000000000000000000000000000000000000000000000000000000009", - "index": 268, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 144, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 145, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 146, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 147, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 269, + "index": 148, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x000000000000000000000000000000000000000000000000000000000000000a", - "index": 270, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 149, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 271, + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 150, "topics": [ - "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", - "0x000000000000000000000000219a5ce6d1c512d5b050ad2e3d380b8746be0cb8", - "0x0000000000000000000000000000000000000000000000000000000000000001" + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 151, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 152, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 153, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 154, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 272, + "index": 155, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x000000000000000000000000000000000000000000000000000000000000000b", - "index": 273, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 156, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { - "address": "0xc1490c2759Eda9aFDE3e6Babf66367407F2cb010", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 274, + "index": 157, "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 158, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 159, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 275, + "index": 161, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x000000000000000000000000000000000000000000000000000000000000000c", - "index": 276, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 162, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, "data": "0x", - "index": 277, + "index": 163, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x55461c9b9ac4657ac9fd645d04e4c6d1dc79b3dfdc57e8c141867e944841a0bb", - "blockNumber": 6698826, - "data": "0x000000000000000000000000000000000000000000000000000000000000000d", - "index": 278, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 164, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x2eed67fcf1763eec7ef14ca888c00e6e0d2358663046a3e4367e42ef35bdfba4" + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" ], - "transactionHash": "0x326db7312ebbe11dcd5c7c504f6a7ef2d37c6b1fc0014022103af4d0f82b54b1", - "transactionIndex": 240 + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 } ], - "logsBloom": "0x00000000000010200000000000088000000000000800000000801000000000000080000000000000000400000042120000000000000410000000000001040000000000000000200000000000000000000001340080040000000000000000000000000000020000000000000000000800000000000000000000000000020000400000000000000000080100000000000000000020000000000100000000000020004000000000000000000000000000002200400000000000100000000004000000000002000000000000000000000100000000000010060000000000000060000000000000000040000004000080000200080000000080000000000080000000", + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"ERC1167FailedCreateClone\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=node_modules/@sphinx-labs/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xd18408af8a91bedb3d56343eeb9b30eb852e6dea93a5e2d5c6db9ca4cb905155\",\"urls\":[\"bzz-raw://061475b7302a732dc598907790f407417551c2b13e89daa57b3698489ef5484b\",\"dweb:/ipfs/QmdX5qmk3VSniSErFuD4aVawQxUi2MuUbP7spPcHddPfcX\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0xe440530f1d0cc16578981e1d2e4e13674360c677d19a74a4b08f9f7268c70aee\",\"urls\":[\"bzz-raw://ddea4aeaf523f48a1364a02d2ccb75f3dfd8a2b9af465964e9adf3ce53f4196a\",\"dweb:/ipfs/QmVWhN1Nn9khUN8ctAgh2Ypo2vnFBgDHtDw6S232A6RkFw\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0xd26c3a774ff38be79064085970454fe2603a23a638c76270d5b1b3829206c3e8\",\"urls\":[\"bzz-raw://3b55dbe3bf1ef625b7ca04efab3de35406e6041d5b3d82c7265469c500e2b702\",\"dweb:/ipfs/QmUdBDo4Lt3mcsFcsXT2mqq3czFwZjQJFPLM89YA2VtD7k\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"directory\",\"type\":\"address\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"FailedDeployment\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"InsufficientBalance\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBControlled_ControllerUnauthorized\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyName\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptySymbol\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_EmptyToken\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientCredits\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_InsufficientTokensToBurn\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_OverflowAlert\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"type\":\"error\",\"name\":\"JBTokens_ProjectAlreadyHasToken\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_RecipientZeroAddress\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokenAlreadyBeingUsed\"},{\"inputs\":[],\"type\":\"error\",\"name\":\"JBTokens_TokenNotFound\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"type\":\"error\",\"name\":\"JBTokens_TokensMustHave18Decimals\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"tokenBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Burn\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"creditBalance\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"ClaimTokens\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\",\"indexed\":false},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"DeployERC20\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"bool\",\"name\":\"shouldClaimTokens\",\"type\":\"bool\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"Mint\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"SetToken\",\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\",\"indexed\":true},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\",\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\",\"indexed\":false},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\",\"indexed\":false}],\"type\":\"event\",\"name\":\"TransferCredits\",\"anonymous\":false},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DIRECTORY\",\"outputs\":[{\"internalType\":\"contract IJBDirectory\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"TOKEN\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"burnFrom\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"claimTokensFor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"creditBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deployERC20For\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mintFor\"},{\"inputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"projectIdOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"contract IJBToken\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"setTokenFor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"tokenOf\",\"outputs\":[{\"internalType\":\"contract IJBToken\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalBalanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalCreditSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupplyOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalSupply\",\"type\":\"uint256\"}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"holder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"projectId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"count\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferCreditsFrom\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"burnFrom(address,uint256,uint256)\":{\"details\":\"Credits are burned first, then tokens are burned.Only a project's current controller can burn its tokens.\",\"params\":{\"count\":\"The number of tokens to burn.\",\"holder\":\"The address that owns the tokens which are being burned.\",\"projectId\":\"The ID of the project to the burned tokens belong to.\"}},\"claimTokensFor(address,uint256,uint256,address)\":{\"details\":\"Only a project's controller can claim that project's tokens.\",\"params\":{\"beneficiary\":\"The account into which the claimed tokens will go.\",\"count\":\"The number of tokens to claim.\",\"holder\":\"The owner of the credits being redeemed.\",\"projectId\":\"The ID of the project whose tokens are being claimed.\"}},\"constructor\":{\"params\":{\"directory\":\"A contract storing directories of terminals and controllers for each project.\",\"token\":\"The implementation of the token contract that project can deploy.\"}},\"deployERC20For(uint256,string,string,bytes32)\":{\"details\":\"Deploys a project's ERC-20 token contract.Only a project's controller can deploy its token.\",\"params\":{\"name\":\"The ERC-20's name.\",\"projectId\":\"The ID of the project to deploy an ERC-20 token for.\",\"salt\":\"The salt used for ERC-1167 clone deployment. Pass a non-zero salt for deterministic deployment based on `msg.sender` and the `TOKEN` implementation address.\",\"symbol\":\"The ERC-20's symbol.\"},\"returns\":{\"token\":\"The address of the token that was deployed.\"}},\"mintFor(address,uint256,uint256)\":{\"details\":\"Only a project's current controller can mint its tokens.\",\"params\":{\"count\":\"The number of tokens to mint.\",\"holder\":\"The address receiving the new tokens.\",\"projectId\":\"The ID of the project to which the tokens belong.\"}},\"setTokenFor(uint256,address)\":{\"details\":\"Only a project's controller can set its token.\",\"params\":{\"projectId\":\"The ID of the project to set the token of.\",\"token\":\"The new token's address.\"}},\"totalBalanceOf(address,uint256)\":{\"params\":{\"holder\":\"The holder to get a balance for.\",\"projectId\":\"The project to get the `_holder`s balance for.\"},\"returns\":{\"balance\":\"The combined token and token credit balance of the `_holder\"}},\"totalSupplyOf(uint256)\":{\"params\":{\"projectId\":\"The ID of the project to get the total supply of.\"},\"returns\":{\"totalSupply\":\"The total supply of the project's tokens and token credits.\"}},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"details\":\"Only a project's controller can transfer credits for that project.\",\"params\":{\"count\":\"The number of token credits to transfer.\",\"holder\":\"The address to transfer credits from.\",\"projectId\":\"The ID of the project whose credits are being transferred.\",\"recipient\":\"The recipient of the credits.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"DIRECTORY()\":{\"notice\":\"The directory of terminals and controllers for projects.\"},\"TOKEN()\":{\"notice\":\"A reference to the token implementation that'll be cloned as projects deploy their own tokens.\"},\"burnFrom(address,uint256,uint256)\":{\"notice\":\"Burns (destroys) credits or tokens.\"},\"claimTokensFor(address,uint256,uint256,address)\":{\"notice\":\"Redeem credits to claim tokens into a holder's wallet.\"},\"creditBalanceOf(address,uint256)\":{\"notice\":\"Each holder's credit balance for each project.\"},\"deployERC20For(uint256,string,string,bytes32)\":{\"notice\":\"Deploys an ERC-20 token for a project. It will be used when claiming tokens.\"},\"mintFor(address,uint256,uint256)\":{\"notice\":\"Mint (create) new tokens or credits.\"},\"projectIdOf(address)\":{\"notice\":\"Each token's project.\"},\"setTokenFor(uint256,address)\":{\"notice\":\"Set a project's token if not already set.\"},\"tokenOf(uint256)\":{\"notice\":\"Each project's attached token contract.\"},\"totalBalanceOf(address,uint256)\":{\"notice\":\"The total balance a holder has for a specified project, including both tokens and token credits.\"},\"totalCreditSupplyOf(uint256)\":{\"notice\":\"The total supply of credits for each project.\"},\"totalSupplyOf(uint256)\":{\"notice\":\"The total supply for a specific project, including both tokens and token credits.\"},\"transferCreditsFrom(address,uint256,address,uint256)\":{\"notice\":\"Allows a holder to transfer credits to another account.\"}},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"src/JBTokens.sol\":\"JBTokens\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"node_modules/@openzeppelin/contracts/proxy/Clones.sol\":{\"keccak256\":\"0xf55d01dac75cffdabec6833a79bf3be0c108fc0db10e273daf7adfd3e9e59dae\",\"urls\":[\"bzz-raw://540002a50a2a1a2b9dafffb976178e55adbf8d3a28db462c69f996921479c6b0\",\"dweb:/ipfs/QmQNAFyMf2FW3U1giM4Yej3zzd1pnxMtAA5GoADj4hTYYD\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"],\"license\":\"MIT\"},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"],\"license\":\"MIT\"},\"src/JBTokens.sol\":{\"keccak256\":\"0x73e41ad5f4763cd1bc20c70e6b27fd5f1e9f27de50663c261f19b7462592aac4\",\"urls\":[\"bzz-raw://7ba47929a82d89a1049f1d41c3dd6ea2ff473129ab52db0d41affd7516aa6ccb\",\"dweb:/ipfs/QmYzMaZJvvGbvPeyFYMvjWWpTLvVsKK6yczmhZ5MKUM4Vc\"],\"license\":\"MIT\"},\"src/abstract/JBControlled.sol\":{\"keccak256\":\"0xf9d7688d1770d6e3a13d8672928c8e9d600f0f9fd2560c7c627fc317e8e7fbb8\",\"urls\":[\"bzz-raw://158fafbafac8d2d24f2019f902efff88cdd708b0831b9a32784bc0ea65afb6bc\",\"dweb:/ipfs/QmQ28nbTqudRpZir8ei1Y8THHEcmFkeLrAnqB1t18Lj3Xi\"],\"license\":\"MIT\"},\"src/interfaces/IJBControlled.sol\":{\"keccak256\":\"0x79fb8de7b3f809f1c3c7189f578b7331ec4dfe3350151d5b50240ecb3a2a907b\",\"urls\":[\"bzz-raw://45c82240dd4f0e9aec00d0d86f6b44bdda231db098ebdac17e922771b3e6f342\",\"dweb:/ipfs/QmPUvT8HZeVenrZDpP14HsZofaXPJjih8UAd35rTg3tU7E\"],\"license\":\"MIT\"},\"src/interfaces/IJBDirectory.sol\":{\"keccak256\":\"0xcb97db460d2948a7f51c660fe0d1b1749047a419027711c476b86ad3573534c5\",\"urls\":[\"bzz-raw://a909c7a3d471054537894dca827e6e018e92ac25299b43026e5b1e335ec4de68\",\"dweb:/ipfs/QmU1GT3F8PNMjSiPPP5cSLLofefHYFJXnywMCdqqM9xUeh\"],\"license\":\"MIT\"},\"src/interfaces/IJBPayHook.sol\":{\"keccak256\":\"0x9438866782c652c2942f4d114e35f393cd3c8b0334abce8387eed90bca35e8b2\",\"urls\":[\"bzz-raw://cfd99daf57213f92325aad7d7d16e98476d38e870470e95ba01e3ae3cdecc95d\",\"dweb:/ipfs/QmUKKAVGf7ki8BHksr99tFcRW8APveeB5tNH63ctTbbCW8\"],\"license\":\"MIT\"},\"src/interfaces/IJBProjects.sol\":{\"keccak256\":\"0x4ae42a9cc29b517b26d2b9b635deb82c16696b777deeca92dfcad33b0f81c0a0\",\"urls\":[\"bzz-raw://1dcbd860e7d7f05232d90c5e9cfd3d01e2ce986ffcdb053473d8a4d387b1a48a\",\"dweb:/ipfs/QmWKWoSJJbVWDumbnzXJBJyXmAacgC97bxMtchh8te41bn\"],\"license\":\"MIT\"},\"src/interfaces/IJBTerminal.sol\":{\"keccak256\":\"0x5a4c0ef6c8fd10069a408cc42a862909f7b47aba46327da5003203508d8f17d9\",\"urls\":[\"bzz-raw://09d8854151c21046b6b939189ad2139c669888e6baf47034a0cb754104d1efe6\",\"dweb:/ipfs/QmaMrxnf6K6znvDBwdAqsw5x6yuR4SY1BdNtyz226siAt5\"],\"license\":\"MIT\"},\"src/interfaces/IJBToken.sol\":{\"keccak256\":\"0xd33757cd3da65a9d66404b7e6ddb7a27b4902885a3498b9db1673c218e9fab2d\",\"urls\":[\"bzz-raw://de28759920dab1db6cfcb4ff2ffae76491be371b791a2a0ec054ff17653872dc\",\"dweb:/ipfs/QmPXnhdxbgoV4dBRJCi9siQYRfrvcJLDtY1rp3H2vtU1Cz\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokenUriResolver.sol\":{\"keccak256\":\"0xfa5cb00dcd6085d1ef912d071fe73c63f9478a2cd0f9d8bddaf659b6af2d0967\",\"urls\":[\"bzz-raw://282e4e7c342d65f77cde0e9a08fcaf20ef5cf379c7a48b639842c0ffd0b2afb8\",\"dweb:/ipfs/QmbnN3PEQeZaXdPLT75V1J79kMg7KqSMru37RHrL3z8Yf2\"],\"license\":\"MIT\"},\"src/interfaces/IJBTokens.sol\":{\"keccak256\":\"0x1348b416ebf501409acc9970d46be89ffd076566001ceff9b96fce1b0b2c405d\",\"urls\":[\"bzz-raw://74327019f5174345afed10d9a60caa9ef908382e131882c27588b13be8364b36\",\"dweb:/ipfs/QmZAqB6hFSymTEbjqHWgE4t9NRose9AJh4etGyWnvDkhJt\"],\"license\":\"MIT\"},\"src/structs/JBAccountingContext.sol\":{\"keccak256\":\"0x9c47e048a719f784f601df69a583505432217b9868a0244876d277f84dd1ebdf\",\"urls\":[\"bzz-raw://8565f194b87914da9a02af2e760ae2ed2a9d185c6f11229f7035140776d2fec9\",\"dweb:/ipfs/QmPs2fic8W3F5e5zNRwmGmJFjb3JWGPWJ3YUe5o82nQgEn\"],\"license\":\"MIT\"},\"src/structs/JBAfterPayRecordedContext.sol\":{\"keccak256\":\"0x3bfc01ae9944a0ff5c41125e18ebb8efca58d7aa4e471d2ffa6d8588afb689ab\",\"urls\":[\"bzz-raw://beb21399142d9b89539cfc8aa94119bc106bd1ea847b922d4c78f3f8804a5cba\",\"dweb:/ipfs/QmXDwJXrzCb6zh1KYwVdN2PEY86uK62MTfYF1M2MBtbEP7\"],\"license\":\"MIT\"},\"src/structs/JBTokenAmount.sol\":{\"keccak256\":\"0xc61593d33d5ec30e695d382948a1b944d01e29a8f2bfd29f75ecebcdbc7816de\",\"urls\":[\"bzz-raw://8992c1e5fca0c2342ecc0e734dfba6a2a752e4c29184784931d0971e44305051\",\"dweb:/ipfs/QmYNcaW3qeCkgAExUaFTq238fgfJuoYCTwjCn7jm94U4dJ\"],\"license\":\"MIT\"}},\"version\":1}", "args": [ - "0xE0B2860344bA476e12eD1d559656dA9D04F1AD22", - "0x721dbE852b6b329212F5AEccA1253F291363867A" + "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6" ], - "bytecode": "0x60c060405234801561001057600080fd5b5060405161157d38038061157d83398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a0516114a46100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f6201526114a46000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd3660046110f8565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b61013561013036600461111c565b610293565b005b610135610145366004611151565b6104ee565b61015d6101583660046111e4565b610663565b6040516001600160a01b039091168152602001610119565b61010f610183366004611266565b60036020526000908152604090205481565b61010f6101a3366004611266565b610881565b61015d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a81565b61010f6101dd36600461127f565b610920565b61015d7f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad2281565b61013561021736600461111c565b6109d3565b61013561022a3660046112ab565b610b5e565b61010f61023d36600461127f565b600060208181529281526040808220909352908152205481565b61015d610265366004611266565b6002602052600090815260409020546001600160a01b031681565b61013561028e3660046112f3565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f9190611323565b610347565b60005b90506103538282611352565b85111561038c57846103658383611352565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e0908290611365565b6001600160a01b038a166000908152602081815260408083208c8452825280832093909355600390522054610416908290611365565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a9060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000721dbe852b6b329212f5aecca1253f291363867a611071565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b9033906113a1565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a9030906004016113ec565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d9190611323565b6109179083611352565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf9190611323565b6109c99083611352565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a96908490611352565b909155505060008581526003602052604081208054869290610ab9908490611352565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c26908490611352565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db7919061142e565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e23919061142e565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad221690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e9190611451565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f000000000000000000000000e0b2860344ba476e12ed1d559656da9d04f1ad226001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd59190611451565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b1760205281603760096000f590506001600160a01b03811661106b576040516330be1a3d60e21b815260040160405180910390fd5b92915050565b6000763d602d80600a3d3981f3363d3d373d3d3d363d730000008260601b60e81c176000526e5af43d82803e903d91602b57fd5bf38260781b17602052603760096000f090506001600160a01b0381166110de576040516330be1a3d60e21b815260040160405180910390fd5b919050565b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561110a57600080fd5b8135611115816110e3565b9392505050565b60008060006060848603121561113157600080fd5b833561113c816110e3565b95602085013595506040909401359392505050565b6000806000806080858703121561116757600080fd5b8435611172816110e3565b935060208501359250604085013591506060850135611190816110e3565b939692955090935050565b60008083601f8401126111ad57600080fd5b50813567ffffffffffffffff8111156111c557600080fd5b6020830191508360208285010111156111dd57600080fd5b9250929050565b600080600080600080608087890312156111fd57600080fd5b86359550602087013567ffffffffffffffff8082111561121c57600080fd5b6112288a838b0161119b565b9097509550604089013591508082111561124157600080fd5b5061124e89828a0161119b565b979a9699509497949695606090950135949350505050565b60006020828403121561127857600080fd5b5035919050565b6000806040838503121561129257600080fd5b823561129d816110e3565b946020939093013593505050565b600080600080608085870312156112c157600080fd5b84356112cc816110e3565b93506020850135925060408501356112e3816110e3565b9396929550929360600135925050565b6000806040838503121561130657600080fd5b823591506020830135611318816110e3565b809150509250929050565b60006020828403121561133557600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561106b5761106b61133c565b8181038181111561106b5761106b61133c565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6080815260006113b560808301888a611378565b82810360208401526113c8818789611378565b604084019590955250506001600160a01b0391909116606090910152949350505050565b606081526000611400606083018789611378565b8281036020840152611413818688611378565b91505060018060a01b03831660408301529695505050505050565b60006020828403121561144057600080fd5b815160ff8116811461111557600080fd5b60006020828403121561146357600080fd5b8151611115816110e356fea26469706673582212209843d2dd65ccf08d2d43fe3665c04ad281fb8c9248d0605d1922df9d12da3d4b64736f6c63430008170033", + "bytecode": "0x60c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df681565b61010f6101dd3660046112ea565b610920565b61015d7f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c7581565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df69060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c751690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f0000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c756001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c63430008170033", "devdoc": { "kind": "dev", "methods": { @@ -1002,7 +1153,7 @@ }, "version": 1 }, - "gitCommit": "265dad3852d04d03aba15963b8c2fd79653719f9", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "src/JBTokens.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/SphinxConstants.json b/deployments/nana-core-testnet/sepolia/SphinxConstants.json index e1ac80ea..5070bf0b 100644 --- a/deployments/nana-core-testnet/sepolia/SphinxConstants.json +++ b/deployments/nana-core-testnet/sepolia/SphinxConstants.json @@ -1,8 +1,8 @@ { "_format": "sphinx-sol-ct-artifact-1", - "merkleRoot": "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295", + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", "contractName": "SphinxConstants", - "address": "0x1e03fe41B3bDC81E113F763e83B63336c17c15b9", + "address": "0x1F7eB47e508F03BeDC5660a64D40ba94f53a0721", "abi": [ { "type": "function", @@ -167,224 +167,224 @@ "stateMutability": "view" } ], - "solcInputHash": "17290ec6beab65a01e22fada4855826c", + "solcInputHash": "b6c351fd96634234999dc102235e550e", "receipt": { - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "contractAddress": null, - "cumulativeGasUsed": "17639924", + "cumulativeGasUsed": "14166050", "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", - "gasPrice": "99331411389", - "gasUsed": "2962955", - "hash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "index": 66, + "gasPrice": "521552484", + "gasUsed": "2961727", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "index": 102, "logs": [ { "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000000", - "index": 85, + "index": 219, "topics": [ "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", - "0xf4e4f998442a0288d3df1c28b14cc2216ff71a9b0d1d1764585d38dfcbc72d1e" + "0xb89411d51ba5218484f674dd5bc7e369b20d9b3e04e39947fe94970929e7bea4" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x0000000000000000000000001e03fe41b3bdc81e113f763e83b63336c17c15b9", - "index": 86, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 220, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 87, + "index": 221, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "index": 88, + "index": 222, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1", - "index": 89, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 223, "topics": [ "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 90, + "index": 224, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000002", - "index": 91, + "index": 225, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { - "address": "0x7769087dcaB8C6124a4305511b90582431F10e53", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, - "data": "0x000000000000000000000000102d93b7860f1927c40b0b1c12264fec5318b0d1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", - "index": 92, + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 226, "topics": [ "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x000000000000000000000000000000000000000000000000000000000000eeee", "0x0000000000000000000000000000000000000000000000000000000000000001" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 93, + "index": 227, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000003", - "index": 94, + "index": 228, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 95, + "index": 229, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000004", - "index": 96, + "index": 230, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 97, + "index": 231, "topics": [ "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x0000000000000000000000000000000000000000000000000000000000000005", - "index": 98, + "index": 232, "topics": [ "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 }, { "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", - "blockHash": "0x19d4562f846cb864df566c748f66e0865d9c7d347f91594afca45e6bd9c569e6", - "blockNumber": 6752709, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, "data": "0x", - "index": 99, + "index": 233, "topics": [ "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", - "0x296572cbd517f339f8935570269de51408e01cf0bb799c261e7a20337cb88295" + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" ], - "transactionHash": "0x4983c679766566140191e4973a34ede7a30136821ffdc8a34046222bf375ff20", - "transactionIndex": 66 + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 } ], - "logsBloom": "0x00000000000010000000000000080000000000200040200000000000000000000080000000000000000400000040020000000000000400000000000001048000000000000000200000000000020000000000300000040000000000000000000000000000020000008000000000000800000800000020000000200200200000000000000000000000000100200000000000000020000000000000004000000000104000800014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000002060000000000000000048000004000000000200000000000080000000000008000000", + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200000300001040000000001000000000000000000020000008000000000000800008800000020000000200000000000000000000000008000000100000000000000000020000000000000004000000000004000820014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", "status": 1, "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" }, - "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", + "metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"compatibilityFallbackHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"createCallAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\",\"name\":\"getNetworkInfoArray\",\"outputs\":[{\"internalType\":\"struct NetworkInfo[]\",\"name\":\"\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"enum Network\",\"name\":\"network\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"enum NetworkType\",\"name\":\"networkType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"dripSize\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"dripSizeString\",\"type\":\"string\"}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"multiSendAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"permissionlessRelayAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"safeSingletonAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxLibraryVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleImplAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"sphinxModuleProxyFactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}]}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"remappings\":[\"@arbitrum/=node_modules/@arbitrum/\",\"@bananapus/=node_modules/@bananapus/\",\"@chainlink/=node_modules/@chainlink/\",\"@eth-optimism/=node_modules/@eth-optimism/\",\"@offchainlabs/=node_modules/@offchainlabs/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@prb/=node_modules/@prb/\",\"@scroll-tech/=node_modules/@scroll-tech/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"@uniswap/=node_modules/@uniswap/\",\"@zksync/=node_modules/@zksync/\",\"ds-test/=lib/sphinx/packages/contracts/lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/\"],\"optimizer\":{\"enabled\":true,\"runs\":200},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"compilationTarget\":{\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":\"SphinxConstants\"},\"evmVersion\":\"paris\",\"libraries\":{}},\"sources\":{\"lib/sphinx/packages/contracts/contracts/core/SphinxDataTypes.sol\":{\"keccak256\":\"0x15b96bdef1a96abf705fd0d2a3df8e71a0c9b2e322a5d46969ae5dea1701615a\",\"urls\":[\"bzz-raw://d6f779314720c0a5d56a46192b25e2d12e32a44b788554bc47d41d4e42514480\",\"dweb:/ipfs/QmRfemfx5Sf5FhayWGhHtbW7S68Eo5btTSfiXs3RkNiHVi\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/forge-std/src/Vm.sol\":{\"keccak256\":\"0x970174506ebf5ded3f42ca16ca2105c77768abbaa69627c5e5de4b3f22817f3e\",\"urls\":[\"bzz-raw://45684416e3012088e331f3e12bdec396bf53fd01e3d4077108e96d71b3bcb9d4\",\"dweb:/ipfs/QmdJwYRsAbJtdFmKdoMEPR1QwJJEP1P3mii81eWjsWQsvf\"],\"license\":\"MIT OR Apache-2.0\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol\":{\"keccak256\":\"0x73bee7dc7f8b8c1ae72c7a24b20aef2c4c385cb62cb7919a43a53703fe09e28d\",\"urls\":[\"bzz-raw://323372a4716f26c99d2f364ba281647253772b026a2532b551b1d7833e78d80f\",\"dweb:/ipfs/QmRscvrZYKT5JrSTHCVGMwbWScXRnMptJWp3vE8Xb3q8fJ\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/SphinxPluginTypes.sol\":{\"keccak256\":\"0x93ffc414411c72ed176ddffcf06a97b69f82aa17e09785ac2e78cac3e70edfe3\",\"urls\":[\"bzz-raw://fdf71ee9baf55b9593765375edb923561f03f5c76bfd417ad10c844985175e7e\",\"dweb:/ipfs/QmNhDym118w1mPHQR6BEB73pZcj8Xi1reNCwaPMm3qTwq7\"],\"license\":\"MIT\"},\"lib/sphinx/packages/contracts/contracts/foundry/interfaces/IEnum.sol\":{\"keccak256\":\"0x02ae422f18b602a3a0cda3aad1c47cd93a6926acc2c349bee538d33a8347006d\",\"urls\":[\"bzz-raw://cc6663b954e6c95d2e83f4bde0dd5a57327a5e02438eed3682deb3a6529341cc\",\"dweb:/ipfs/QmYwe3GzLSF3AsBUV6kgEGcs2XJAdWwjzHGP9n21f2qqgx\"],\"license\":\"LGPL-3.0-only\"}},\"version\":1}", "args": [], - "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea2646970667358221220ca2b87eea3a6bd9ecfbe4ee1122218561cfddf6fb90185d0dcfc75246f66e3ee64736f6c63430008170033", + "bytecode": "0x608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c63430008170033", "devdoc": { "kind": "dev", "methods": {}, @@ -395,7 +395,7 @@ "methods": {}, "version": 1 }, - "gitCommit": "b5dbcdd0a3bad6c8b5830718ee8dcd5094606b84", + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", "sourceName": "lib/sphinx/packages/contracts/contracts/foundry/SphinxConstants.sol", "chainId": "11155111", "linkReferences": {}, diff --git a/deployments/nana-core-testnet/sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json b/deployments/nana-core-testnet/sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json new file mode 100644 index 00000000..4c9a9540 --- /dev/null +++ b/deployments/nana-core-testnet/sepolia/execution/0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57.json @@ -0,0 +1,396 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0x1e438f673254f09b4cdc88be85a6c6910ad534525cf5434128c5153fc65bb933", + "blockNumber": 7238975, + "contractAddress": null, + "cumulativeGasUsed": "19190397", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "539966694", + "gasUsed": "179046", + "hash": "0x7850541ccb759460589c9bd479cf75b3c67dbb96d2439487aaecb11c418653cd", + "index": 93, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x1e438f673254f09b4cdc88be85a6c6910ad534525cf5434128c5153fc65bb933", + "blockNumber": 7238975, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 201, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xa6f33fb897024b17054dbf65773bc530c82634a46aa6c28a09eacc48c4b9f7e1" + ], + "transactionHash": "0x7850541ccb759460589c9bd479cf75b3c67dbb96d2439487aaecb11c418653cd", + "transactionIndex": 93 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x1e438f673254f09b4cdc88be85a6c6910ad534525cf5434128c5153fc65bb933", + "blockNumber": 7238975, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 202, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "0x0000000000000000000000000000000000000000000000000000000000000005" + ], + "transactionHash": "0x7850541ccb759460589c9bd479cf75b3c67dbb96d2439487aaecb11c418653cd", + "transactionIndex": 93 + } + ], + "logsBloom": "0x000000000000000080000000000000000000000000000000000000000000000000800000000000002000000000400200000000000004000000000000000000000040100000000000000000000000000000003000010000000000001000000000000000000000000000000000000000000080000000000000000000000000000000004000000000000001000000000010000008200000000000000000000000000040000000000000000000000000000020010000000000001000000000000000000000020000000000000000000000000000000000000200000000000000000000000000000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238975, + "blockHash": "0x1e438f673254f09b4cdc88be85a6c6910ad534525cf5434128c5153fc65bb933", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003848f38f8350d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b5700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000006000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054afde9169ac23092728b198feea217855d67e6b71d5979b71a6b775131a88c8d7ddc4c71a88dcec29684e60fb1cd3775cbf3d1513263f35a08aacbecc5a901f8174fc78dc4ae8946ab10459892183b6f62c6c99ab0bb225d97929f3fae1724004ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e07860000000000000000000000000000000000000000000000000000000000000041cd4c557e23ad083f5aa69ad5ba8ab151c6270fb64b1f654055648ac09acea61a158877deed36d265d885ee57df764aefde0b352a4be84c937c4cc0e4060909321c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "191396", + "gasPrice": "539966694", + "hash": "0x7850541ccb759460589c9bd479cf75b3c67dbb96d2439487aaecb11c418653cd", + "maxFeePerGas": "1158800824", + "maxPriorityFeePerGas": "6518822", + "nonce": 146, + "signature": { + "networkV": null, + "r": "0xa5d8e509c8fb20bcb9bc540b821361123ddb140d9fc7069338d3e7e7a24668a0", + "s": "0x340212ce43705e3694baa35e233e239a50535ea50257723c018e4dd004b98712", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "contractAddress": null, + "cumulativeGasUsed": "14166050", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "521552484", + "gasUsed": "2961727", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "index": 102, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 219, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xb89411d51ba5218484f674dd5bc7e369b20d9b3e04e39947fe94970929e7bea4" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000001f7eb47e508f03bedc5660a64d40ba94f53a0721", + "index": 220, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 221, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 222, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "index": 223, + "topics": [ + "0x4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b511" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 224, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 225, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 226, + "topics": [ + "0x2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000000000000000000000000000000000000000eeee", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 227, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 228, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 229, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 230, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 231, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 232, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "blockNumber": 7238978, + "data": "0x", + "index": 233, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57" + ], + "transactionHash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "transactionIndex": 102 + } + ], + "logsBloom": "0x00000000000010000000000000080000000200000000000000000000000000000080000000000000200400000040020000000000000400000000000001040000000000000000220000000000020000200000300001040000000001000000000000000000020000008000000000000800008800000020000000200000000000000000000000008000000100000000000000000020000000000000004000000000004000820014000000000000000000002200000000000000100000000004000000000002000000010000000000000000000000000000020000000000000060000000000000000048000004000000000200000000000080000000000008000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238978, + "blockHash": "0xddd6f5db375cf6a9c5298e876b1e81681b08572524224727e6587c383c2e6163", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003e24e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000272000000000000000000000000000000000000000000000000000000000000030a000000000000000000000000000000000000000000000000000000000000033c000000000000000000000000000000000000000000000000000000000000038e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000025c00000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000024e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245cc000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000023e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005479b258488fdaa41e0f9750432ffb40a6ab987ea7a442d95620c0cf2212d87067ddc4c71a88dcec29684e60fb1cd3775cbf3d1513263f35a08aacbecc5a901f8174fc78dc4ae8946ab10459892183b6f62c6c99ab0bb225d97929f3fae1724004ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000008c00000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000007cbb62eaa69f79e6873cd1ecb2392971036cfaa40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007b44a00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000006e44c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033000000000000000000000000694aa1769357215de4fac081bf1f309adc3253060000000000000000000000000000000000000000000000000000000000000e100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000511596cb30af9f3dfbd33b2b8244a71b14566e17cbb11928c65b4b4fc200c69624b720257e2ca3cfc6fc7f31ae770878a781b9b70805379041e893496dce447651f99132a4ab019e1257c3f06159455bcaa2635462a21e989cb7ab47e880aece94ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001800000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002682d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000084c6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f631230000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059a53d44c3be99e79ac8894fe89c3538baad122b7de3ed682fb2ea29a1c90d6b2821b8830ea9a8dc2ca9325e1a256faa497309e548bf8b7e461f92842bbc980a890b471b9e005c8adfb750de6e0baffe22aabf9bcb625dc77ca406eb08a4c2356cd9a0874e5b8835487209edf6e7285e7fa0ec5595a95caae9ecab7f0ff60af24faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049c9300000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c6343000817003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000520a48959e9f4d209935dfd9064824b19d82d1b9964898d1c26f8e72582b0c5b24b720257e2ca3cfc6fc7f31ae770878a781b9b70805379041e893496dce447651f99132a4ab019e1257c3f06159455bcaa2635462a21e989cb7ab47e880aece94ceead638bde345470f2b927fa0edf2065218608f126ad550f0cf805b60a9303faaa3b6243024b4354414dc58bf61078cc6d461a8ca729521136d98e709e0786000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004600000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000490db00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000028dccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004ba59cab7bc41e749839d8ddd17878a4b772b5dcfd7e75bdd2424e40d41c28d6a01f8eadc67cf7aa658eabae4772280b6db40fb7531426d16fbd24568a89933e40dcab9b3f592794213f8b354a9fe3fac0cf2ee8e1e701549ae3129eb3a8f38d44ba2b8a54b761248ccd1c80601feb420bb1c1f697dbfe1b61397318eed97bfb000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "3257705", + "gasPrice": "521552484", + "hash": "0xe9224b679419aa6a233831e277d31d19d00be79974a43a887ff781914db34209", + "maxFeePerGas": "1130189244", + "maxPriorityFeePerGas": "6518822", + "nonce": 147, + "signature": { + "networkV": null, + "r": "0x5608536e60c16f8a3ee10f5e90744d5b89de047b687b0fe295d496f65c21b9ed", + "s": "0x535a17d6bfc147f1c7be4532449792083c28d9006d65a80d2882f84b3b9fe1aa", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x0d160a1c3d44fcb340710cb621217119f8c7c1ea60eb09dc227439c69c152b57", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "5", + "chainId": "11155111", + "actions": [ + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000236f608060405234801561001057600080fd5b5061234f806100206000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806387047e491161006657806387047e491461014157806394830f8d1461015c57806397d0ce3b14610177578063ac33251714610192578063f35d092c146101c557600080fd5b80631b4c5550146100a357806340524aed146100db57806341384bd9146100f65780635643a8691461011157806380d5794c1461012c575b600080fd5b6100be738f3301c9eada5642b5bb12fd047d3ebb2932e61981565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be738f4e4d51b8050b0ff713eff1f88f3dd8b5e8a53081565b6100be73a6b71e26c5e0845f74c812102ca7114b6a896ab281565b6100be73a238cbeb142c10ef7ad8442c6d1f9e89e07e776181565b6101346101e0565b6040516100d29190612216565b6100be73a2ea7657440875bf916cbfc0cfa88f13e38ad46381565b6100be73d9db270c1b5e3bd161e8c8503c55ceabee70955281565b6100be737cbb62eaa69f79e6873cd1ecb2392971036cfaa481565b6101b860405180604001604052806007815260200166076302e32332e360cc1b81525081565b6040516100d291906122e9565b6100be73f48f2b2d2a534e402487b3ee7c18c33aec0fe5e481565b6040805160358082526106c0820190925260609160009190816020015b610205612172565b8152602001906001900390816101fd579050506040805160c0810190915290915080600081526040805180820182526005815264185b9d9a5b60da1b602082810191909152830152617a699082015260600160028152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816000815181106102a0576102a0612303565b60209081029190910101526040805160c0810190915280600181526040805180820182526008815267657468657265756d60c01b60208281019190915283015260019082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160018151811061033557610335612303565b60209081029190910101526040805160c08101909152806002815260408051808201825260078152667365706f6c696160c81b60208281019190915283015262aa36a79082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164062408aa8960db1b815250815250816002815181106103c8576103c8612303565b60209081029190910101526040805160c08101909152806003815260408051808201825260088152676f7074696d69736d60c01b602082810191909152830152600a90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160038151811061045d5761045d612303565b60209081029190910101526040805160c081019091528060048152604080518082018252601081526f6f7074696d69736d5f7365706f6c696160801b60208281019190915283015262aa37dc9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816004815181106104fc576104fc612303565b60209081029190910101526040805160c0810190915280600581526040805180820182526008815267617262697472756d60c01b60208281019190915283015261a4b190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160058151811061059257610592612303565b60209081029190910101526040805160c081019091528060068152604080518082018252601081526f617262697472756d5f7365706f6c696160801b60208281019190915283015262066eee9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160068151811061063157610631612303565b60209081029190910101526040805160c08101909152806007815260408051808201825260078152663837b63cb3b7b760c91b60208281019190915283015260899082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b815250815250816007815181106106c4576106c4612303565b60209081029190910101526040805160c081019091528060088152604080518082018252600c81526b706f6c79676f6e5f616d6f7960a01b602082810191909152830152620138829082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600781526020016631204d4154494360c81b8152508152508160088151811061075e5761075e612303565b60209081029190910101526040805160c081019091528060098152604080518082018252600381526231373160e91b6020828101919091528301526038908201526060016000815260200166b1a2bc2ec500008152602001604051806040016040528060088152602001671817181a9021272160c11b815250815250816009815181106107ed576107ed612303565b60209081029190910101526040805160c0810190915280600a8152604080518082018252600b81526a189b9897dd195cdd1b995d60aa1b60208281019190915283015260619082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001671817189a9021272160c11b81525081525081600a8151811061088557610885612303565b60209081029190910101526040805160c0810190915280600b81526040805180820182526006815265676e6f73697360d01b60208281019190915283015260649082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531207844414960d01b81525081525081600b8151811061091657610916612303565b60209081029190910101526040805160c0810190915280600c8152604080518082018252600d81526c676e6f7369735f63686961646f60981b6020828101919091528301526127d89082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e3135207844414960b81b81525081525081600c815181106109b2576109b2612303565b60209081029190910101526040805160c0810190915280600d815260408051808201825260058152646c696e656160d81b60208281019190915283015261e70890820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600d81518110610a4557610a45612303565b60209081029190910101526040805160c0810190915280600e8152604080518082018252600d81526c6c696e65615f7365706f6c696160981b60208281019190915283015261e7059082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081600e81518110610ae057610ae0612303565b60209081029190910101526040805160c0810190915280600f8152604080518082018252600d81526c706f6c79676f6e5f7a6b65766d60981b60208281019190915283015261044d90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081600f81518110610b7b57610b7b612303565b60209081029190910101526040805160c0810190915280601081526040805180820182526015815274706f6c79676f6e5f7a6b65766d5f636172646f6e6160581b60208281019190915283015261098a9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601081518110610c1e57610c1e612303565b60209081029190910101526040805160c08101909152806011815260408051808201825260098152686176616c616e63686560b81b60208281019190915283015261a86a9082015260600160008152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601181518110610cb357610cb3612303565b60209081029190910101526040805160c081019091528060128152604080518082018252600e81526d6176616c616e6368655f66756a6960901b60208281019190915283015261a8699082015260600160018152602001670de0b6b3a76400008152602001604051806040016040528060068152602001650624082ac82b60d31b81525081525081601281518110610d4d57610d4d612303565b60209081029190910101526040805160c081019091528060138152604080518082018252600681526566616e746f6d60d01b60208281019190915283015260fa9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601381518110610ddd57610ddd612303565b60209081029190910101526040805160c081019091528060148152604080518082018252600e81526d19985b9d1bdb57dd195cdd1b995d60921b602082810191909152830152610fa29082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806005815260200164312046544d60d81b81525081525081601481518110610e7657610e76612303565b60209081029190910101526040805160c08101909152806015815260408051808201825260048152636261736560e01b60208281019190915283015261210590820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081601581518110610f0857610f08612303565b60209081029190910101526040805160c081019091528060168152604080518082018252600c81526b626173655f7365706f6c696160a01b60208281019190915283015262014a349082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081601681518110610fa357610fa3612303565b60209081029190910101526040805160c081019091528060178152604080518082018252600481526363656c6f60e01b60208281019190915283015261a4ec9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312043454c4f60d01b8152508152508160178151811061103357611033612303565b60209081029190910101526040805160c081019091528060188152604080518082018252600e81526d63656c6f5f616c66616a6f72657360901b60208281019190915283015261aef39082015260600160018152602001670214e8348c4f0000815260200160405180604001604052806009815260200168302e31352043454c4f60b81b815250815250816018815181106110d0576110d0612303565b60209081029190910101526040805160c081019091528060198152604080518082018252600981526836b7b7b73934bb32b960b91b6020828101919091528301526105059082015260600160008152602001670214e8348c4f00008152602001604051806040016040528060098152602001681817189a9026a7ab2960b91b8152508152508160198151811061116857611168612303565b60209081029190910101526040805160c0810190915280601a815260408051808201825260088152676d6f6f6e6265616d60c01b6020828101919091528301526105049082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189023a626a960d11b81525081525081601a815181106111fc576111fc612303565b60209081029190910101526040805160c0810190915280601b8152604080518082018252600e81526d6d6f6f6e626173655f616c70686160901b602082810191909152830152610507908201526060016001815260200166b1a2bc2ec500008152602001604051806040016040528060098152602001681817181a9023a626a960b91b81525081525081601b8151811061129857611298612303565b60209081029190910101526040805160c0810190915280601c815260408051808201825260048152636675736560e01b602082810191909152830152607a9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204655534560d01b81525081525081601c8151811061132757611327612303565b60209081029190910101526040805160c0810190915280601d8152604080518082018252600581526465766d6f7360d81b6020828101919091528301526123299082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806007815260200166312045564d4f5360c81b81525081525081601d815181106113b9576113b9612303565b60209081029190910101526040805160c0810190915280601e8152604080518082018252600d81526c195d9b5bdcd7dd195cdd1b995d609a1b602082810191909152830152612328908201526060016001815260200166354a6ba7a1800081526020016040518060400160405280600b81526020016a302e3031352045564d4f5360a81b81525081525081601e8151811061145657611456612303565b60209081029190910101526040805160c0810190915280601f815260408051808201825260048152636b61766160e01b6020828101919091528301526108ae9082015260600160008152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b81525081525081601f815181106114e6576114e6612303565b60200260200101819052506040518060c001604052806020603481111561150f5761150f6121ba565b8152604080518082018252600c81526b1ad85d9857dd195cdd1b995d60a21b6020828101919091528301526108ad9082015260600160018152602001670de0b6b3a764000081526020016040518060400160405280600681526020016531204b41564160d01b8152508152508160208151811061158e5761158e612303565b60209081029190910101526040805160c08101909152806021815260408051808201825260068152651cd8dc9bdb1b60d21b6020828101919091528301526208275090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160218151811061162357611623612303565b60209081029190910101526040805160c081019091528060228152604080518082018252600e81526d7363726f6c6c5f7365706f6c696160901b6020828101919091528301526208274f9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b815250815250816022815181106116c0576116c0612303565b60209081029190910101526040805160c0810190915280602381526040805180820182526009815268726f6f7473746f636b60b81b602082810191909152830152601e908201526060016000815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b8152508152508160238151811061175757611757612303565b60209081029190910101526040805160c08101909152806024815260408051808201825260118152701c9bdbdd1cdd1bd8dad7dd195cdd1b995d607a1b602082810191909152830152601f908201526060016001815260200166038d7ea4c6800081526020016040518060400160405280600a815260200169302e303031205242544360b01b815250815250816024815181106117f6576117f6612303565b60209081029190910101526040805160c08101909152806025815260408051808201825260048152637a6f726160e01b6020828101919091528301526276adf190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160258151811061188957611889612303565b60209081029190910101526040805160c081019091528060268152604080518082018252600c81526b7a6f72615f7365706f6c696160a01b602082810191909152830152633b9ac9ff9082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b8152508152508160268151811061192557611925612303565b60209081029190910101526040805160c08101909152806027815260408051808201825260048152637261726960e01b602082810191909152830152635241524990820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b815250815250816027815181106119b9576119b9612303565b60209081029190910101526040805160c081019091528060288152604080518082018252600c81526b726172695f7365706f6c696160a01b60208281019190915283015263726172699082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602881518110611a5557611a55612303565b60209081029190910101526040805160c081019091528060298152604080518082018252600d81526c626c6173745f7365706f6c696160981b602082810191909152830152630a0c71fd90820152606001600181526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602981518110611af257611af2612303565b60209081029190910101526040805160c0810190915280602a81526040805180820182526005815264189b185cdd60da1b60208281019190915283015262013e3190820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602a81518110611b8657611b86612303565b60209081029190910101526040805160c0810190915280602b8152604080518082018252600b81526a7461696b6f5f6b61746c6160a81b60208281019190915283015262028c609082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602b81518110611c2057611c20612303565b60209081029190910101526040805160c0810190915280602c8152604080518082018252600c81526b6d6f64655f7365706f6c696160a01b6020828101919091528301526103979082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081602c81518110611cba57611cba612303565b60209081029190910101526040805160c0810190915280602d815260408051808201825260048152636d6f646560e01b60208281019190915283015261868b90820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b81525081525081602d81518110611d4c57611d4c612303565b60209081029190910101526040805160c0810190915280602e815260408051808201825260118152703230b93bb4b734b0afb830b733b7b634b760791b602082810191909152830152602b9082015260600160018152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b81525081525081602e81518110611de857611de8612303565b60209081029190910101526040805160c0810190915280602f8152604080518082018252600e81526d6d616e746c655f7365706f6c696160901b60208281019190915283015261138b9082015260600160018152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081602f81518110611e8157611e81612303565b60209081029190910101526040805160c08101909152806030815260408051808201825260068152656d616e746c6560d01b6020828101919091528301526113889082015260600160008152602001674563918244f400008152602001604051806040016040528060058152602001640d4813539560da1b81525081525081603081518110611f1257611f12612303565b60209081029190910101526040805160c081019091528060318152604080518082018252600c81526b61737461725f7a6b796f746f60a01b602082810191909152830152625c23599082015260600160018152602001670214e8348c4f00008152602001604051806040016040528060088152602001670605c626a408aa8960c31b81525081525081603181518110611fad57611fad612303565b60209081029190910101526040805160c081019091528060328152604080518082018252600581526430b9ba30b960d91b602082810191909152830152610ec090820152606001600081526020016658d15e176280008152602001604051806040016040528060098152602001680605c60646a408aa8960bb1b8152508152508160328151811061204057612040612303565b60209081029190910101526040805160c081019091528060338152604080518082018252600481526331b930b160e11b602082810191909152830152602c9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165189021a920a160d11b815250815250816033815181106120cf576120cf612303565b60209081029190910101526040805160c081019091528060348152604080518082018252600881526764617277696e696160c01b602082810191909152830152602e9082015260600160008152602001670de0b6b3a7640000815260200160405180604001604052806006815260200165312052494e4760d01b8152508152508160348151811061216257612162612303565b6020908102919091010152919050565b6040805160c0810190915280600081526020016060815260200160008152602001600060028111156121a6576121a66121ba565b815260200160008152602001606081525090565b634e487b7160e01b600052602160045260246000fd5b6000815180845260005b818110156121f6576020818501810151868301820152016121da565b506000602082860101526020601f19601f83011685010191505092915050565b600060208083018184528085518083526040925060408601915060408160051b87010184880160005b838110156122db57603f19898403018552815160c0815160358110612266576122666121ba565b85528189015189860182905261227e828701826121d0565b91505087820151888601526060808301516003811061229f5761229f6121ba565b908601526080828101519086015260a091820151858203928601929092526122c781836121d0565b96890196945050509086019060010161223f565b509098975050505050505050565b6020815260006122fc60208301846121d0565b9392505050565b634e487b7160e01b600052603260045260246000fdfea26469706673582212207f58bb845fa7b5b3a65605895beacae62ee667a4e458b472cb139f0480a7378964736f6c634300081700330000000000000000000000000000000000", + "gas": "2383040", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x7cbB62EaA69F79e6873cD1ecB2392971036cFAa4", + "value": "0", + "txData": "0x4c8c9ea100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000066a60c060405234801561001057600080fd5b5060405161062a38038061062a83398101604081905261002f91610045565b6001600160a01b0390911660805260a05261007f565b6000806040838503121561005857600080fd5b82516001600160a01b038116811461006f57600080fd5b6020939093015192949293505050565b60805160a05161056d6100bd60003960008181608f0152818161015e01526101a3015260008181604b0152818160d40152610224015261056d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630beaf38c14610046578063785ffb371461008a578063d3f5c15f146100bf575b600080fd5b61006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100b17f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610081565b6100b16100cd366004610321565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015610130573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101549190610359565b50935050925050807f000000000000000000000000000000000000000000000000000000000000000061018791906103bf565b4211156101db576040516352b4aba960e11b81524260048201527f00000000000000000000000000000000000000000000000000000000000000006024820152604481018290526064015b60405180910390fd5b806000036101fc57604051631d70a56560e01b815260040160405180910390fd5b600082136102205760405163e374febf60e01b8152600481018390526024016101d2565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102a491906103d8565b60ff1690506102b48382876102bd565b95945050505050565b60008282036102cd57508261031a565b828211156102fb576102df83836103fb565b6102ea90600a6104f2565b6102f490856104fe565b905061031a565b61030582846103fb565b61031090600a6104f2565b6102f49085610515565b9392505050565b60006020828403121561033357600080fd5b5035919050565b805169ffffffffffffffffffff8116811461035457600080fd5b919050565b600080600080600060a0868803121561037157600080fd5b61037a8661033a565b945060208601519350604086015192506060860151915061039d6080870161033a565b90509295509295909350565b634e487b7160e01b600052601160045260246000fd5b808201808211156103d2576103d26103a9565b92915050565b6000602082840312156103ea57600080fd5b815160ff8116811461031a57600080fd5b818103818111156103d2576103d26103a9565b600181815b8085111561044957816000190482111561042f5761042f6103a9565b8085161561043c57918102915b93841c9390800290610413565b509250929050565b600082610460575060016103d2565b8161046d575060006103d2565b8160018114610483576002811461048d576104a9565b60019150506103d2565b60ff84111561049e5761049e6103a9565b50506001821b6103d2565b5060208310610133831016604e8410600b84101617156104cc575081810a6103d2565b6104d6838361040e565b80600019048211156104ea576104ea6103a9565b029392505050565b600061031a8383610451565b80820281158282048414176103d2576103d26103a9565b60008261053257634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220a8b7d39ad4cb80bbbb8aec4371dfe2ce0ae2dfa98fc1c36c2ac8f913db32c59564736f6c63430008170033000000000000000000000000694aa1769357215de4fac081bf1f309adc3253060000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000", + "gas": "504906", + "operation": 1, + "requireSuccess": true + }, + { + "to": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "value": "0", + "txData": "0xc6081d710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eeee0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b340efab9ac83c42882f78ef6fc6f177a7f63123", + "gas": "157741", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b506203f48060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea2646970667358221220c551366c585416ee0373a17e144b7cbd663c1db1980e87f1da0cceda5550942c64736f6c63430008170033", + "gas": "302227", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xccaa90d69b600760fd918052c9435e4e16162a1505d21cb3b524dd0f0fef208f60a060405234801561001057600080fd5b5062093a8060805260805161022d6100406000396000818160730152818161010e0152610138015261022d6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a7146100465780631be052891461006e57806350609a56146100a3575b600080fd5b610059610054366004610179565b6100c3565b60405190151581526020015b60405180910390f35b6100957f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610065565b6100b66100b13660046101a3565b6100fa565b60405161006591906101cf565b60006001600160e01b03198216634b80c8df60e01b14806100f457506001600160e01b031982166301ffc9a760e01b145b92915050565b60008183111561010c57506005610172565b7f00000000000000000000000000000000000000000000000000000000000000008383031061016c57817f000000000000000000000000000000000000000000000000000000000000000042011061016557600461016f565b600361016f565b60055b90505b9392505050565b60006020828403121561018b57600080fd5b81356001600160e01b03198116811461017257600080fd5b6000806000606084860312156101b857600080fd5b505081359360208301359350604090920135919050565b60208101600683106101f157634e487b7160e01b600052602160045260246000fd5b9190529056fea264697066735822122020107a71d1a028ae945276c7e64b54d54bd48d985b859b62e68d250ca38bcf7d64736f6c63430008170033", + "gas": "299227", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/deployments/nana-core-testnet/sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json b/deployments/nana-core-testnet/sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json new file mode 100644 index 00000000..5645acd9 --- /dev/null +++ b/deployments/nana-core-testnet/sepolia/execution/732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a.json @@ -0,0 +1,937 @@ +{ + "_format": "sphinx-sol-execution-artifact-1", + "transactions": [ + { + "receipt": { + "blockHash": "0xe5ed32b8c2f8e2aa4df22e4c52b7f1caa2259309ae4f988f086f129bbd95b684", + "blockNumber": 7238952, + "contractAddress": null, + "cumulativeGasUsed": "14099294", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "613619391", + "gasUsed": "180253", + "hash": "0x130ac3eb7be589705bc9dbb5bc7f7ea001cceeb469748c58ec9efee92986b6d7", + "index": 84, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xe5ed32b8c2f8e2aa4df22e4c52b7f1caa2259309ae4f988f086f129bbd95b684", + "blockNumber": 7238952, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 313, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x6edd920c4277773a15e3dab13b5b5a90692cdc8d02deddf7d96ed916646166dd" + ], + "transactionHash": "0x130ac3eb7be589705bc9dbb5bc7f7ea001cceeb469748c58ec9efee92986b6d7", + "transactionIndex": 84 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xe5ed32b8c2f8e2aa4df22e4c52b7f1caa2259309ae4f988f086f129bbd95b684", + "blockNumber": 7238952, + "data": "0x000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad463000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "index": 314, + "topics": [ + "0x382c7aec02462c9b086aba9a7f8dbb1fb8bf336e7b624b0149eeca6726d0fb4a", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "0x0000000000000000000000000000000000000000000000000000000000000004" + ], + "transactionHash": "0x130ac3eb7be589705bc9dbb5bc7f7ea001cceeb469748c58ec9efee92986b6d7", + "transactionIndex": 84 + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000800010000000000000000000400200000000000004000000000000000000000040000000040000000000000000000000003000000000008000001000000000080000000000000000040000000000000000000000000000000000000000000000000000000002000001000000000000000000200000000000000000000000000040000000000000000000000000000020000000000000001020000000200000000000020000000000000000000000000000000080000200000000000000000000000000000000400000000000000000000000000000a0000000000000000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238952, + "blockHash": "0xe5ed32b8c2f8e2aa4df22e4c52b7f1caa2259309ae4f988f086f129bbd95b684", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000003a48f38f835732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf00000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000010000000000000000000000000a2ea7657440875bf916cbfc0cfa88f13e38ad46300000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069872fff5cf8a205815754754e5b54f4e1955a19295d06b0a59ea9f6cf59db1da51f36f9dbe2584709d76d990f3219b35c1b83dcad762b36e939cc67463130cb02662686d2f38f0f4addc8fdd4af28744f85de7517008938b7e1b6c2824865e7c5590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004191987533e4effa4a831fc32a15bf073d02ab57f87e144fb2a0817d9899b6b45527e1753c2152dcd598b74b901ffda9124a88d4232d0fce47c4d96f4d83d250731c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "192632", + "gasPrice": "613619391", + "hash": "0x130ac3eb7be589705bc9dbb5bc7f7ea001cceeb469748c58ec9efee92986b6d7", + "maxFeePerGas": "1179839410", + "maxPriorityFeePerGas": "20145672", + "nonce": 142, + "signature": { + "networkV": null, + "r": "0x3460674a436efd28a353040a5c54b19423c32ac2b28efbae38b5f69c04c6a418", + "s": "0x064ea709cd0e6da6e6f821895e02996db3a799f574617526dfefe29fca136807", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "contractAddress": null, + "cumulativeGasUsed": "17323969", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "620954897", + "gasUsed": "10188201", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "index": 77, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 142, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0x866cf94c10d90115e8c8e1fe2c63daad4b25e97ab14de25cb043f4b8f7945fc2" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 143, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "index": 144, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 145, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c", + "index": 146, + "topics": [ + "0x365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 147, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 148, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000002", + "index": 149, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 150, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 151, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000003", + "index": 152, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 153, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000004", + "index": 154, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 155, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000005", + "index": 156, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x8c88469cA3aA9dE6Ab22c5113Ae2A8E20329fd8c", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 157, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 158, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000006", + "index": 159, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xb2C36630B8774c8346D980fb9BCcA40B28C26Df6", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 160, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 161, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000007", + "index": 162, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x", + "index": 163, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "blockNumber": 7238953, + "data": "0x0000000000000000000000000000000000000000000000000000000000000008", + "index": 164, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "transactionIndex": 77 + } + ], + "logsBloom": "0x00000000000010002000000004080220000300000800000000800000000000000080000000000000000400000040020000000000000400000000000001040000000000100000220000000008400000200001300080040000800100000000000000000000028000000000000000000800000000000000000000000410000000480000000000000200000100000000000000000020000000000200000000000000004000000000000000000000000000002200000000000000100000000024000000000002000000000000000000000000090000000000020000000000001060400010000000000040000004000000000200080000000080000000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238953, + "blockHash": "0xad00d210c742c3cadb46c23c03b229c3341cbfa363e2e6301681f1d05ae7c82d", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000cd44e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000ce00000000000000000000000000000000000000000000000000000000000002b00000000000000000000000000000000000000000000000000000000000000464000000000000000000000000000000000000000000000000000000000000056c0000000000000000000000000000000000000000000000000000000000000790000000000000000000000000000000000000000000000000000000000000089e0000000000000000000000000000000000000000000000000000000000000b40000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000b000000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000a200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b506a00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000939df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000006e5f0476c7f21bd5e4e484f0a7578de086e90b3ed41c3540cc8ebc9a22165faa4283afe8778ba40c902ece15dc76a829e6f02f60e078655398bc9dba9a73e58f11f187bd0b1692896345e6e40b4dac9505f2a7cef4b85539c2ba1521832a006275eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001d400000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000001c600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015f64800000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001b69df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a8f7981f46f9de8bb24ff2dffe3ce3b70b11758fe4482146b2d16743e6e8d9c987694a20b60ebbe46ce3373f3a7f611c170afc2e97ecf135174fa266e7ce2b7875ced2eac0c6e359339679bcb73c52d7a999345ca9075f2b81199060e65d4df35590da6efd4c53a331a2207e11ef16210ad37b9ca13a94eb4baad40f4966f7f845e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001a600000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000019800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018556400000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001894df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b10000000000000000000000000000000000000000000000000000000000000000000000000000000000000006fc020085b5d834f4d3a9753f4a3a70597820cc95707215a5041d1121f87bf6ae1cac67f836b1e4071b46b1a5ad4294ae7a73b4a77f429eba13998c50274ef78fd276f538e9ae02000223bc714a3f963760f807e802e623c0e4598446b2b055825eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000fa00000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000ec00000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ed68500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000dcddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006e1117de640d8aab70dd49207b3d14e7566e0f4723d2ed7e32508db522382dd21283afe8778ba40c902ece15dc76a829e6f02f60e078655398bc9dba9a73e58f11f187bd0b1692896345e6e40b4dac9505f2a7cef4b85539c2ba1521832a006275eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000021600000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000020800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fd96b00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001f85df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006f946a485cd7504f35d0f19eb1ae31522bc5878179e99f3573ba0a0e4a18a12db1cac67f836b1e4071b46b1a5ad4294ae7a73b4a77f429eba13998c50274ef78fd276f538e9ae02000223bc714a3f963760f807e802e623c0e4598446b2b055825eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000aa36a70000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000f200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e67f100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000e3cdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000000000000000000000000000000000000000000000000006329054247a3a4650246031c3d3790895a129d02e7bc82c9da6df383b7f4a411c9a30c0cb9af571775245d6aa0876df50b29a785cd7fc0db1a64b288013e41db991a0a3b42d164ade9a65d04a857b4aa5f7d39e453c18846ffba6e942de3262049f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000029400000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000070000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000028600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024cd2000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000002766df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066a942dccee3c9f1139324f0b4c838830dd8e3ccaad5d2f9ec975b8d1e571de2251c1e252cf6e863ed4995b9b7a4e376944f71a703e2c04fccee1ba0fd4aad8d7faede6f80e1abd301c798f069a3d47d9faf3638cbbd4f1a11832ccf8f4c18ad13ea91a6b8fe07f096ec44c7d58e1c822a36420cbb102279e43fef5c0b893af4ec7c4ad1c5b795ff599bf2dfdd76a46873111cbc9efd7ad8c79ebce2fc621c5782effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000018200000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000017400000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000168f6000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000001648df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000639beb3bab8ed4566d7d471dd142f9663ec3517f0a840d20c5935e98bed79e49cbb33c7c0333a8d437d460dc5f4a52299ac984c193ad858c90212ad9bc0e581c0c08322e3624c4d7c2f1b50baeefd8acfdd027fa7c166a3ce5461301c9a6beb679f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "11005314", + "gasPrice": "620954897", + "hash": "0xed6aeed77977734a89b525a359905ed3ff0822ed5209b6ee02a1f9d0416b9212", + "maxFeePerGas": "1205647663", + "maxPriorityFeePerGas": "18700225", + "nonce": 143, + "signature": { + "networkV": null, + "r": "0x826e7f9deefbad1010db1ea5fa4076867db91d487d0841d84d166b7385a83919", + "s": "0x2a9399d8267f3db68e947881f60a662f9f3150c884c21b209fee2f9730cad43b", + "v": 28 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "contractAddress": null, + "cumulativeGasUsed": "23545541", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "560878992", + "gasUsed": "10258367", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "index": 110, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 190, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xec8c10f9af052122091a14eb2e5e65828dbf6a14566a5ac8c835e18825451d5e" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 191, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x0000000000000000000000000000000000000000000000000000000000000009", + "index": 192, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 193, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000a", + "index": 194, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "index": 195, + "topics": [ + "0x11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab", + "0x00000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 196, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000b", + "index": 197, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xaB1065BC48C9f7e450411f1CC38C5ccfE5688AB8", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 198, + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 199, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000c", + "index": 200, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x", + "index": 201, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "blockNumber": 7238956, + "data": "0x000000000000000000000000000000000000000000000000000000000000000d", + "index": 202, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "transactionIndex": 110 + } + ], + "logsBloom": "0x0000000000001020200000000008002000000000000000000080000000000000088000000000000000040000004002000000000000040000000000000104000000000000000020000000000000000000000130008004000080000000000000000000000002000000000000000000080000000000000000000000000000000040080000000000020000010000000000100000006000000000000000000000002000c000000000080000000000000000002200400000000000100000000024000000000002000000010000000000000000000000000000060000000000000060000010000000000040000004000000000200080000000080040000000080000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238956, + "blockHash": "0x75d96c866da4690c0a3ce9b5973de314e218231b747683a83d1d6f4d69daf7cc", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000c144e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000138000000000000000000000000000000000000000000000000000000000000076a000000000000000000000000000000000000000000000000000000000000079a000000000000000000000000000000000000000000000000000000000000080e0000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000aa36a700000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000011200000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011285d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000103ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000000000000000000000000000000000000000000000000006347ced761bca821844bb824c65e55f3b85c8e7b58f271b66f5bad4448e65090d9a30c0cb9af571775245d6aa0876df50b29a785cd7fc0db1a64b288013e41db991a0a3b42d164ade9a65d04a857b4aa5f7d39e453c18846ffba6e942de3262049f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b4769000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000062400000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000061600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005b747300000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006079df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a8700000000000000000000000000000000000000000000000000000000000000000000000000000685db3b54066aed16e561ea23d1046a3bba5bbce28e9a0340813d472dd7594eae3f4e4c2c859b80c3fe3aeac59a6a5a343a7e00928d84420a308232592bb29cc1115cc7a7e90793e69e3a00be657bdab493ab5558a06f9be948cdf0ed5b7d7edc9dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001400000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000251be00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000044a1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ed86a28a52ddf6d892dab8706d45e0a54a2fbebadd357d83354a86b0cd56cd5bdd43dda7a6ea44bebb6d8421e23e53c500c86c6a06780e43e69022f33d79d4611f187bd0b1692896345e6e40b4dac9505f2a7cef4b85539c2ba1521832a006275eb380d3c921c79dc95bf166c66f908f4df457e5eb299eddddf87eb4c847c50f049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000006600000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000005800000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006123900000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000490df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006b7cb803f2e54b9bfca1c1047204ca4b1d5812a76218cbd67c08f28bde4667d40359539cb23b3733ff8afc4493845ef3ba67563344d166b6893a2b9065b2d1e99896e63884df4bf0fb192763bef921fec6f024f75982b2fb0ade1089255d3d11de10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000003f400000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000003e600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003b23b700000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000003d6ddf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006ddaa1c9e5a6dab2dd7a1b2d7b4977d2c0e6baca776a2019112c33e57965c71673663175f18515c4df526a43e09e727b4c3e03b437e11ae7c4c4133bf90c58206032650801bc1dba7ed9bba60aff80bd764eebc848dcc89a62c95d4ee6c9b5d85e10c3d3158a67283ac4d95ffbac2e1df6050be56ffe357d5d7e7ef401e139b1a049cc107029ccefd0e51ebb05df77b2a1ec97ca7706a712ca6cb4c2e38f04d050d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "11406962", + "gasPrice": "560878992", + "hash": "0x89e23726154bcdbc8e9951be8528b726e011eaafc912850abe1530994489c3f1", + "maxFeePerGas": "1191592183", + "maxPriorityFeePerGas": "15665545", + "nonce": 144, + "signature": { + "networkV": null, + "r": "0x76fd10f2b2e4a46d7ca3f9fbf1c6044f64bf79dd76ad1dc964efb94312f49caa", + "s": "0x7e2104ae83100ec4f7d4f0fe151a07e557a15b5ffc6fbcbc68739acd98e9d39b", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + }, + { + "receipt": { + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "contractAddress": null, + "cumulativeGasUsed": "13978758", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasPrice": "626173276", + "gasUsed": "5652159", + "hash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "index": 83, + "logs": [ + { + "address": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "index": 144, + "topics": [ + "0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d", + "0x0000000000000000000000000c1c9049564269275059032fb484aa2e7ab779af", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf", + "0xb87067316592cce79ff62ec541f016f9265f14f86f81f036b8fbf15916dfb46e" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x", + "index": 145, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x000000000000000000000000000000000000000000000000000000000000000e", + "index": 146, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x", + "index": 147, + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "0x00000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x", + "index": 148, + "topics": [ + "0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8", + "0x00000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x000000000000000000000000000000000000000000000000000000000000000f", + "index": 149, + "topics": [ + "0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + }, + { + "address": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "blockNumber": 7238957, + "data": "0x", + "index": 150, + "topics": [ + "0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63", + "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a" + ], + "transactionHash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "transactionIndex": 83 + } + ], + "logsBloom": "0x00000000000010000000000000080000000000000000008000000000000000000081000000000000000400000040020000000000000400000020000001040000000000000000200000000008400000000000300080040000800000000000000000000000000000000000000000000000000000000000000000000410000000010000000000000200000100000000000000000020000000000000000000000000004000800000000000000000000000002200000000000000100000000024000000000002000000000000000000000000080000000000020000000000040040000000000000000048000004002000000200080000000080000000000088000000", + "status": 1, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463" + }, + "response": { + "accessList": [], + "blockNumber": 7238957, + "blockHash": "0x559e864476ec4a840dd8068c504d2482bdc2063b9a52d8257c082d0e666f2ecf", + "chainId": "11155111", + "data": "0xbe6002c200000000000000000000000014da41c60ce8928558db8cefe4b80cad187c3eaf000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000068c4e65ec46d0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006560000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000064400000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000063600000000000000000000000004e59b44847b379578588920ca78fbf26c0b4956c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005c220d00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000006265df6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000694e159a7842b1e190eeb2d4f50f412442c40c1b8080f208aa91564a1dc0f93f7ad811485a9435054b71fbe984a011801cf726813e105251d7001db31b0f934df81fd8ec49bc8b5996324223bdd0eff15363f4f1cb6774631e33fc62ac39ab4539dcbe78e8c84b8f0804b06c1a458943d40a715e18e70856947e312ac36deaa2545e4ccdb7cb1fec6e8262159830c115830e3cf72c364038547e5f64f584ea68b0d39ddf75eb0dfc8c6a507303e6789cb6af6fdc63ddd1b7c4f00c56ea3cd56d9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002400000000000000000000000000000000000000000000000000000000000aa36a7000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001600000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000266ce00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000006442842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000638e10d70cfcec70cd1af78ba002f94bdbf5c3e9455c5cd5dcee09b7dd188b9a6bb33c7c0333a8d437d460dc5f4a52299ac984c193ad858c90212ad9bc0e581c0c08322e3624c4d7c2f1b50baeefd8acfdd027fa7c166a3ce5461301c9a6beb679f1c6fa2bdb32bea2cbd8f2b59c1564e80aa9c977dfcf74c2000b6107942d3a32ee7bbcc8008fb033ed5adb6a0959b5aed2433cadc7f4132b60fcde888cea1a22effa394519464a8d95af9b718af7f3d243866125690792839e92596625b476900000000000000000000000000000000000000000000000000000000", + "from": "0x0c1c9049564269275059032Fb484Aa2e7Ab779af", + "gasLimit": "7019576", + "gasPrice": "626173276", + "hash": "0x4b580b1a773ce7027b07c7ab76cf70b90878a4c53cd5bf1216d9cd360e35dbee", + "maxFeePerGas": "1105327277", + "maxPriorityFeePerGas": "14900383", + "nonce": 145, + "signature": { + "networkV": null, + "r": "0x7dc0b47c500b9fb5c74f6d80fb94f4c9995bcbb182054c767fa40e0303d4401e", + "s": "0x73f6b732067b28b562116a6b5d0099c6dd148cae0faf3d5580ba7905b5af8e99", + "v": 27 + }, + "to": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "type": 2, + "value": "0" + } + } + ], + "merkleRoot": "0x732be88c08b5a2d625882757714ef23a3a10316e007749118eaca4a956dc9f8a", + "solcInputHashes": [ + "b6c351fd96634234999dc102235e550e" + ], + "safeAddress": "0xd72a3b02a39CFE137346444E5fbb5fF297B4d1b1", + "moduleAddress": "0x14da41c60ce8928558DB8cEfe4B80caD187C3EaF", + "executorAddress": "0xA2eA7657440875bF916CBFC0cfA88F13e38aD463", + "nonce": "4", + "chainId": "11155111", + "actions": [ + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b506108f9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c8063348b684e1461005c578063632af95f1461008457806380deb23014610097578063893ce901146100d55780638affd7eb146100ea575b600080fd5b61006f61006a3660046105ce565b6100f2565b60405190151581526020015b60405180910390f35b61006f610092366004610634565b61022e565b6100c76100a53660046106f6565b6000602081815293815260408082208552928152828120909352825290205481565b60405190815260200161007b565b6100e86100e3366004610732565b6103bb565b005b6100c7600081565b600060ff84111561011e576040516311f31b1160e21b8152600481018590526024015b60405180910390fd5b82801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190811c8116148061019d575081801561019d57506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190811c8116145b156101aa57506001610224565b6001600160a01b03878116600090815260208181526040808320938a16835292815282822088835290522054600190851c81161480610221575081801561022157506001600160a01b03878116600090815260208181526040808320938a16835292815282822082805290522054600190851c8116145b90505b9695505050505050565b60008280156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822089835290522054600190811c811614806102af57508180156102af57506001600160a01b03888116600090815260208181526040808320938b16835292815282822082805290522054600190811c8116145b156102bc575060016103b0565b6001600160a01b03808916600090815260208181526040808320938b16835292815282822089835290529081205490836102f7576000610324565b6001600160a01b03808b16600090815260208181526040808320938d168352928152828220828052905220545b905060005b868110156103a857600088888381811061034557610345610787565b90506020020135905060ff811115610373576040516311f31b1160e21b815260048101829052602401610115565b600184821c81161415801561038d5750600183821c811614155b1561039f5760009450505050506103b0565b50600101610329565b506001925050505b979650505050505050565b60006103d26103cd604084018461079d565b61054a565b9050336001600160a01b0384161480159061041f5750600181811c8116148061041f575061041d338461040b60408601602087016107ee565b66ffffffffffffff16600180806100f2565b155b1561043d57604051635b5fa6b760e11b815260040160405180910390fd5b8060008061044e602086018661081e565b6001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060008460200160208101906104a691906107ee565b66ffffffffffffff168152602001908152602001600020819055508160200160208101906104d491906107ee565b66ffffffffffffff166001600160a01b0384166104f4602085018561081e565b6001600160a01b03167f5324a861114a736770617a7dad3321b8417dc39698b30adfade6d0367b2e5d5961052b604087018761079d565b863360405161053d949392919061084a565b60405180910390a4505050565b6000805b8281101561059b57600084848381811061056a5761056a610787565b905060200201602081019061057f91906108a8565b60ff169050806001901b8317925050808060010191505061054e565b5092915050565b80356001600160a01b03811681146105b957600080fd5b919050565b803580151581146105b957600080fd5b60008060008060008060c087890312156105e757600080fd5b6105f0876105a2565b95506105fe602088016105a2565b9450604087013593506060870135925061061a608088016105be565b915061062860a088016105be565b90509295509295509295565b600080600080600080600060c0888a03121561064f57600080fd5b610658886105a2565b9650610666602089016105a2565b955060408801359450606088013567ffffffffffffffff8082111561068a57600080fd5b818a0191508a601f83011261069e57600080fd5b8135818111156106ad57600080fd5b8b60208260051b85010111156106c257600080fd5b6020830196508095505050506106da608089016105be565b91506106e860a089016105be565b905092959891949750929550565b60008060006060848603121561070b57600080fd5b610714846105a2565b9250610722602085016105a2565b9150604084013590509250925092565b6000806040838503121561074557600080fd5b61074e836105a2565b9150602083013567ffffffffffffffff81111561076a57600080fd5b83016060818603121561077c57600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126107b457600080fd5b83018035915067ffffffffffffffff8211156107cf57600080fd5b6020019150600581901b36038213156107e757600080fd5b9250929050565b60006020828403121561080057600080fd5b813566ffffffffffffff8116811461081757600080fd5b9392505050565b60006020828403121561083057600080fd5b610817826105a2565b803560ff811681146105b957600080fd5b6060808252810184905260008560808301825b878110156108855760ff61087084610839565b1682526020928301929091019060010161085d565b50602084019590955250506001600160a01b039190911660409091015292915050565b6000602082840312156108ba57600080fd5b6108178261083956fea26469706673582212208b470727162445e4c011440de674b0fa24addcac4a0ec8bf90e6fcaba923cfe064736f6c63430008170033", + "gas": "741482", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760806040523480156200001157600080fd5b5060405162001b0938038062001b0983398101604081905262000034916200072b565b81604051806040016040528060118152602001704a75696365626f782050726f6a6563747360781b81525060405180604001604052806008815260200167094aa92868a849eb60c31b815250816000908162000091919062000801565b506001620000a0828262000801565b5050506001600160a01b038116620000d357604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000de8162000104565b506001600160a01b03811615620000fc57620000fa8162000156565b505b50506200099c565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006007600081546200016990620008cd565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a3620001c48282620001c9565b919050565b620001eb828260405180602001604052806000815250620001ef60201b60201c565b5050565b620001fb838362000210565b6200020b3360008585856200027a565b505050565b6001600160a01b0382166200023c57604051633250574960e11b815260006004820152602401620000ca565b60006200024b838383620003b2565b90506001600160a01b038116156200020b576040516339e3563760e11b815260006004820152602401620000ca565b6001600160a01b0383163b15620003ab57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290620002bf908890889087908790600401620008f5565b6020604051808303816000875af1925050508015620002fd575060408051601f3d908101601f19168201909252620002fa9181019062000969565b60015b6200036b573d8080156200032e576040519150601f19603f3d011682016040523d82523d6000602084013e62000333565b606091505b5080516000036200036357604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14620003a957604051633250574960e11b81526001600160a01b0385166004820152602401620000ca565b505b5050505050565b6000828152600260205260408120546001600160a01b0390811690831615620003e257620003e2818486620004b1565b6001600160a01b0381161562000422576200040160008581806200051b565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161562000452576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b620004be83838362000649565b6200020b576001600160a01b038316620004ef57604051637e27328960e01b815260048101829052602401620000ca565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401620000ca565b80806200053057506001600160a01b03821615155b15620006195760006200054384620006d2565b90506001600160a01b03831615801590620005705750826001600160a01b0316816001600160a01b031614155b8015620005a357506001600160a01b0380821660009081526005602090815260408083209387168352929052205460ff16155b15620005ce5760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401620000ca565b8115620006175783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160a01b03831615801590620006ca5750826001600160a01b0316846001600160a01b03161480620006a557506001600160a01b0380851660009081526005602090815260408083209387168352929052205460ff165b80620006ca57506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6000818152600260205260408120546001600160a01b0316806200070d57604051637e27328960e01b815260048101849052602401620000ca565b92915050565b80516001600160a01b0381168114620001c457600080fd5b600080604083850312156200073f57600080fd5b6200074a8362000713565b91506200075a6020840162000713565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200078e57607f821691505b602082108103620007af57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200020b576000816000526020600020601f850160051c81016020861015620007e05750805b601f850160051c820191505b81811015620003a957828155600101620007ec565b81516001600160401b038111156200081d576200081d62000763565b62000835816200082e845462000779565b84620007b5565b602080601f8311600181146200086d5760008415620008545750858301515b600019600386901b1c1916600185901b178555620003a9565b600085815260208120601f198616915b828110156200089e578886015182559484019460019091019084016200087d565b5085821015620008bd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201620008ee57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060018060a01b03808716835260208187166020850152856040850152608060608501528451915081608085015260005b82811015620009455785810182015185820160a00152810162000927565b5050600060a0828501015260a0601f19601f83011684010191505095945050505050565b6000602082840312156200097c57600080fd5b81516001600160e01b0319811681146200099557600080fd5b9392505050565b61115d80620009ac6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063715018a6116100ad578063c071588811610071578063c07158881461026b578063c87b56dd1461027e578063e131fc0c14610291578063e985e9c5146102a4578063f2fde38b146102b757600080fd5b8063715018a6146102245780638da5cb5b1461022c57806395d89b411461023d578063a22cb46514610245578063b88d4fde1461025857600080fd5b806323b872dd116100f457806323b872dd146101c55780632407497e146101d857806342842e0e146101eb5780636352211e146101fe57806370a082311461021157600080fd5b806301ffc9a71461013157806306661abd1461015957806306fdde0314610170578063081812fc14610185578063095ea7b3146101b0575b600080fd5b61014461013f366004610d33565b6102ca565b60405190151581526020015b60405180910390f35b61016260075481565b604051908152602001610150565b6101786102f5565b6040516101509190610da0565b610198610193366004610db3565b610387565b6040516001600160a01b039091168152602001610150565b6101c36101be366004610de1565b6103b0565b005b6101c36101d3366004610e0d565b6103bf565b6101c36101e6366004610e4e565b61044f565b6101c36101f9366004610e0d565b6104ac565b61019861020c366004610db3565b6104cc565b61016261021f366004610e4e565b6104d7565b6101c361051f565b6006546001600160a01b0316610198565b610178610533565b6101c3610253366004610e6b565b610542565b6101c3610266366004610f18565b61054d565b610162610279366004610e4e565b610565565b61017861028c366004610db3565b6105d4565b600854610198906001600160a01b031681565b6101446102b2366004610fc7565b610672565b6101c36102c5366004610e4e565b6106a0565b60006001600160e01b03198216630321f74760e01b14806102ef57506102ef826106de565b92915050565b60606000805461030490610ff5565b80601f016020809104026020016040519081016040528092919081815260200182805461033090610ff5565b801561037d5780601f106103525761010080835404028352916020019161037d565b820191906000526020600020905b81548152906001019060200180831161036057829003601f168201915b5050505050905090565b60006103928261072e565b506000828152600460205260409020546001600160a01b03166102ef565b6103bb828233610767565b5050565b6001600160a01b0382166103ee57604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103fb838333610774565b9050836001600160a01b0316816001600160a01b031614610449576040516364283d7b60e01b81526001600160a01b03808616600483015260248201849052821660448201526064016103e5565b50505050565b61045761086d565b600880546001600160a01b0383166001600160a01b031990911681179091556040805133815290517fe7784d93cfbfa4408e19577e6cc0436f4dbb51214b70e100905dfce9def88c169181900360200190a250565b6104c78383836040518060200160405280600081525061054d565b505050565b60006102ef8261072e565b60006001600160a01b038216610503576040516322718ad960e21b8152600060048201526024016103e5565b506001600160a01b031660009081526003602052604090205490565b61052761086d565b610531600061089a565b565b60606001805461030490610ff5565b6103bb3383836108ec565b6105588484846103bf565b610449338585858561098b565b60006007600081546105769061102f565b918290555090506001600160a01b038216817f365b3162cd780731fc55a794b59494d472bc2af701007f581843a70673814698336040516001600160a01b03909116815260200160405180910390a36105cf8282610ab6565b919050565b6008546060906001600160a01b0316806105fe575050604080516020810190915260008152919050565b604051636d02a25560e11b8152600481018490526001600160a01b0382169063da0544aa90602401600060405180830381865afa158015610643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261066b9190810190611056565b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6106a861086d565b6001600160a01b0381166106d257604051631e4fbdf760e01b8152600060048201526024016103e5565b6106db8161089a565b50565b60006001600160e01b031982166380ac58cd60e01b148061070f57506001600160e01b03198216635b5e139f60e01b145b806102ef57506301ffc9a760e01b6001600160e01b03198316146102ef565b6000818152600260205260408120546001600160a01b0316806102ef57604051637e27328960e01b8152600481018490526024016103e5565b6104c78383836001610ad0565b6000828152600260205260408120546001600160a01b03908116908316156107a1576107a1818486610bd6565b6001600160a01b038116156107df576107be600085600080610ad0565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561080e576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6006546001600160a01b031633146105315760405163118cdaa760e01b81523360048201526024016103e5565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661091e57604051630b61174360e31b81526001600160a01b03831660048201526024016103e5565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b15610aaf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906109cd9088908890879087906004016110cd565b6020604051808303816000875af1925050508015610a08575060408051601f3d908101601f19168201909252610a059181019061110a565b60015b610a71573d808015610a36576040519150601f19603f3d011682016040523d82523d6000602084013e610a3b565b606091505b508051600003610a6957604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14610aad57604051633250574960e11b81526001600160a01b03851660048201526024016103e5565b505b5050505050565b6103bb828260405180602001604052806000815250610c3a565b8080610ae457506001600160a01b03821615155b15610ba6576000610af48461072e565b90506001600160a01b03831615801590610b205750826001600160a01b0316816001600160a01b031614155b8015610b335750610b318184610672565b155b15610b5c5760405163a9fbf51f60e01b81526001600160a01b03841660048201526024016103e5565b8115610ba45783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610be1838383610c52565b6104c7576001600160a01b038316610c0f57604051637e27328960e01b8152600481018290526024016103e5565b60405163177e802f60e01b81526001600160a01b0383166004820152602481018290526044016103e5565b610c448383610cb8565b6104c733600085858561098b565b60006001600160a01b03831615801590610cb05750826001600160a01b0316846001600160a01b03161480610c8c5750610c8c8484610672565b80610cb057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160a01b038216610ce257604051633250574960e11b8152600060048201526024016103e5565b6000610cf083836000610774565b90506001600160a01b038116156104c7576040516339e3563760e11b8152600060048201526024016103e5565b6001600160e01b0319811681146106db57600080fd5b600060208284031215610d4557600080fd5b813561066b81610d1d565b60005b83811015610d6b578181015183820152602001610d53565b50506000910152565b60008151808452610d8c816020860160208601610d50565b601f01601f19169290920160200192915050565b60208152600061066b6020830184610d74565b600060208284031215610dc557600080fd5b5035919050565b6001600160a01b03811681146106db57600080fd5b60008060408385031215610df457600080fd5b8235610dff81610dcc565b946020939093013593505050565b600080600060608486031215610e2257600080fd5b8335610e2d81610dcc565b92506020840135610e3d81610dcc565b929592945050506040919091013590565b600060208284031215610e6057600080fd5b813561066b81610dcc565b60008060408385031215610e7e57600080fd5b8235610e8981610dcc565b915060208301358015158114610e9e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610ee857610ee8610ea9565b604052919050565b600067ffffffffffffffff821115610f0a57610f0a610ea9565b50601f01601f191660200190565b60008060008060808587031215610f2e57600080fd5b8435610f3981610dcc565b93506020850135610f4981610dcc565b925060408501359150606085013567ffffffffffffffff811115610f6c57600080fd5b8501601f81018713610f7d57600080fd5b8035610f90610f8b82610ef0565b610ebf565b818152886020838501011115610fa557600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610fda57600080fd5b8235610fe581610dcc565b91506020830135610e9e81610dcc565b600181811c9082168061100957607f821691505b60208210810361102957634e487b7160e01b600052602260045260246000fd5b50919050565b60006001820161104f57634e487b7160e01b600052601160045260246000fd5b5060010190565b60006020828403121561106857600080fd5b815167ffffffffffffffff81111561107f57600080fd5b8201601f8101841361109057600080fd5b805161109e610f8b82610ef0565b8181528560208385010111156110b357600080fd5b6110c4826020830160208601610d50565b95945050505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061110090830184610d74565b9695505050505050565b60006020828403121561111c57600080fd5b815161066b81610d1d56fea26469706673582212208ad88aa8e8395d5eed45a24e8a6c12df750cbe55794790401c4a7bf2f6373ffe64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1439304", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c06040523480156200001157600080fd5b5060405162001814380380620018148339810160408190526200003491620000f4565b6001600160a01b03808416608052819081166200006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b62000076816200008b565b50506001600160a01b031660a0525062000148565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114620000f157600080fd5b50565b6000806000606084860312156200010a57600080fd5b83516200011781620000db565b60208501519093506200012a81620000db565b60408501519092506200013d81620000db565b809150509250925092565b60805160a05161167d620001976000396000818160f40152818161029001528181610525015281816105d80152818161066201526109a90152600081816102540152610fb2015261167d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063862026501161008c578063c5664e2111610066578063c5664e21146101f9578063d17541531461021c578063f2fde38b1461023c578063f434c9141461024f57600080fd5b806386202650146101c25780638da5cb5b146101d5578063a1ed3175146101e657600080fd5b80636e49181f116100c85780636e49181f14610171578063714e7f3214610194578063715018a6146101a7578063821b9fd8146101af57600080fd5b8063293c4999146100ef5780635dd8f6aa1461013357806363d0850a1461015c575b600080fd5b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6101166101413660046112ff565b6001602052600090815260409020546001600160a01b031681565b61016f61016a36600461132d565b610276565b005b61018461017f36600461136f565b610444565b604051901515815260200161012a565b61016f6101a236600461136f565b61050b565b61016f61097b565b61016f6101bd36600461139f565b61098f565b6101166101d036600461136f565b610cc5565b6000546001600160a01b0316610116565b61016f6101f436600461142c565b610e46565b61018461020736600461145a565b60026020526000908152604090205460ff1681565b61022f61022a3660046112ff565b610eb0565b60405161012a919061147e565b61016f61024a36600461145a565b610f1c565b6101167f000000000000000000000000000000000000000000000000000000000000000081565b6040516331a9108f60e11b81526004810184905261030b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156102df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030391906114cb565b84600f610f5a565b604051633a01714f60e01b8152600481018490526001600160a01b03838116602483015260009190831690633a01714f90604401606060405180830381865afa15801561035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038091906114e8565b516001600160a01b0316036103c75760405163027bb87960e11b8152600481018490526001600160a01b038084166024830152821660448201526064015b60405180910390fd5b6103d1838261105e565b60008381526003602090815260408083206001600160a01b038681168086529184529382902080546001600160a01b03191694861694851790559051338152909186917fc670a502bbb9f8a4315f95eca901a9f99b65f89a2eb5705a58050e5c00f9d672910160405180910390a4505050565b6000828152600460209081526040808320805482518185028101850190935280835284938301828280156104a157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610483575b505083519394506000925050505b818110156104fd57846001600160a01b03168382815181106104d3576104d3611577565b60200260200101516001600160a01b0316036104f55760019350505050610505565b6001016104af565b506000925050505b92915050565b6040516331a9108f60e11b8152600481018390526105d6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610574573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059891906114cb565b336000908152600260205260409020548490600d9060ff1680156105d157506000868152600160205260409020546001600160a01b0316155b6111fa565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610658919061158d565b82111561070457817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306661abd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e2919061158d565b6040516317140d0f60e31b8152600481019290925260248201526044016103be565b6000828152600160205260408120546001600160a01b03169081158061079657506040516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa158015610770573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079491906115a6565b155b61080857604051632674968d60e21b8152600481018590526001600160a01b038316906399d25a3490602401602060405180830381865afa1580156107df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080391906115a6565b61080b565b60015b90508061082b5760405163cf211e7f60e01b815260040160405180910390fd5b60008481526001602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155915133815286917f7f9a7dcb234c909a09de2f344661ad9e5b24067adb97c908647c2edcbb121c30910160405180910390a36001600160a01b0382161580159061090d57506040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038316906301ffc9a790602401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906115a6565b156109755760405163202dc27d60e11b8152600481018590526001600160a01b03848116602483015283169063405b84fa90604401600060405180830381600087803b15801561095c57600080fd5b505af1158015610970573d6000803e3d6000fd5b505050505b50505050565b61098361120a565b61098d6000611237565b565b6040516331a9108f60e11b815260048101849052610a40907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156109f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a1c91906114cb565b6000858152600160205260409020548590600e906001600160a01b031633146111fa565b6000838152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac291906115a6565b1580610b32575060405163b1a50e3360e01b8152600481018690526001600160a01b0383169063b1a50e3390602401602060405180830381865afa158015610b0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3291906115a6565b6000868152600160205260409020549091506001600160a01b03163314801590610b5a575080155b15610b7857604051630fed236960e21b815260040160405180910390fd5b6000858152600460205260409020610b91908585611287565b506001831115610c825760005b83811015610c80576000610bb38260016115c3565b90505b84811015610c7757858582818110610bd057610bd0611577565b9050602002016020810190610be5919061145a565b6001600160a01b0316868684818110610c0057610c00611577565b9050602002016020810190610c15919061145a565b6001600160a01b031603610c6f57858583818110610c3557610c35611577565b9050602002016020810190610c4a919061145a565b604051638a53d99f60e01b81526001600160a01b0390911660048201526024016103be565b600101610bb6565b50600101610b9e565b505b847fb648241d83df6540fc10f2acc641e4bf80a1e84e7ae2f1f6b0ad204b8fee635b858533604051610cb6939291906115e4565b60405180910390a25050505050565b60008281526003602090815260408083206001600160a01b0380861685529252822054168015801590610cfd5750610cfd8482610444565b15610d09579050610505565b600084815260046020908152604080832080548251818502810185019093528083529192909190830182828015610d6957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d4b575b505083519394506000925050505b81811015610e39576000838281518110610d9357610d93611577565b6020908102919091010151604051633a01714f60e01b8152600481018a90526001600160a01b038981166024830152919250600091831690633a01714f90604401606060405180830381865afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1591906114e8565b516001600160a01b031614610e305794506105059350505050565b50600101610d77565b5060009695505050505050565b610e4e61120a565b6001600160a01b038216600081815260026020908152604091829020805460ff191685151590811790915591513381529192917f11207664cc48b0fa81c8674795f1d8f642960f38d5d2d305ad813093bed85fab910160405180910390a35050565b600081815260046020908152604091829020805483518184028101840190945280845260609392830182828015610f1057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ef2575b50505050509050919050565b610f2461120a565b6001600160a01b038116610f4e57604051631e4fbdf760e01b8152600060048201526024016103be565b610f5781611237565b50565b336001600160a01b038416811480159061101f5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015610ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101d91906115a6565b155b1561097557604051631326f75560e11b81526001600160a01b0380861660048301528216602482015260448101849052606481018390526084016103be565b6110688282610444565b15611071575050565b6000828152600160205260408082205490516301ffc9a760e01b8152632877540760e01b60048201526001600160a01b03909116919082906301ffc9a790602401602060405180830381865afa1580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f391906115a6565b1580611163575060405163b1a50e3360e01b8152600481018590526001600160a01b0383169063b1a50e3390602401602060405180830381865afa15801561113f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116391906115a6565b90508061118357604051630fed236960e21b815260040160405180910390fd5b600084815260046020908152604080832080546001810182559084529282902090920180546001600160a01b0319166001600160a01b038716908117909155915133815286917f409bccc07b7cf7807930526a24318212d614c59f2dde05a017a41efee144e7c8910160405180910390a350505050565b8061097557610975848484610f5a565b6000546001600160a01b0316331461098d5760405163118cdaa760e01b81523360048201526024016103be565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156112da579160200282015b828111156112da5781546001600160a01b0319166001600160a01b038435161782556020909201916001909101906112a7565b506112e69291506112ea565b5090565b5b808211156112e657600081556001016112eb565b60006020828403121561131157600080fd5b5035919050565b6001600160a01b0381168114610f5757600080fd5b60008060006060848603121561134257600080fd5b83359250602084013561135481611318565b9150604084013561136481611318565b809150509250925092565b6000806040838503121561138257600080fd5b82359150602083013561139481611318565b809150509250929050565b6000806000604084860312156113b457600080fd5b83359250602084013567ffffffffffffffff808211156113d357600080fd5b818601915086601f8301126113e757600080fd5b8135818111156113f657600080fd5b8760208260051b850101111561140b57600080fd5b6020830194508093505050509250925092565b8015158114610f5757600080fd5b6000806040838503121561143f57600080fd5b823561144a81611318565b915060208301356113948161141e565b60006020828403121561146c57600080fd5b813561147781611318565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156114bf5783516001600160a01b03168352928401929184019160010161149a565b50909695505050505050565b6000602082840312156114dd57600080fd5b815161147781611318565b6000606082840312156114fa57600080fd5b6040516060810181811067ffffffffffffffff8211171561152b57634e487b7160e01b600052604160045260246000fd5b604052825161153981611318565b8152602083015160ff8116811461154f57600080fd5b6020820152604083015163ffffffff8116811461156b57600080fd5b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561159f57600080fd5b5051919050565b6000602082840312156115b857600080fd5b81516114778161141e565b8082018082111561050557634e487b7160e01b600052601160045260246000fd5b6040808252810183905260008460608301825b8681101561162757823561160a81611318565b6001600160a01b03168252602092830192909101906001016115f7565b506001600160a01b0394909416602093909301929092525090939250505056fea26469706673582212209971158fb95c2979031b19e07cc5d9b6add3a13d2c3fb845842f49ae09ce0a3264736f6c634300081700330000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "1594724", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610d8d380380610d8d83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cf56100986000396000818160910152818161033a01526103c90152610cf56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635963b80b1461005157806369e11cc51461006c57806388bc2ef31461008c578063ed115957146100cb575b600080fd5b610059600081565b6040519081526020015b60405180910390f35b61007f61007a3660046108a0565b6100e0565b604051610063919061092b565b6100b37f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610063565b6100de6100d9366004610979565b61010e565b005b60606100ed848484610179565b905080516000036101075761010484600084610179565b90505b9392505050565b836101188161031a565b60005b82811015610171576000848483818110610137576101376109fc565b90506020028101906101499190610a12565b61015290610b17565b9050610168878783600001518460200151610468565b5060010161011b565b505050505050565b600083815260026020908152604080832085845282528083208484529091528120546060918167ffffffffffffffff8111156101b7576101b7610a32565b60405190808252806020026020018201604052801561021757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282526000199092019101816101d55790505b50905060005b828110156103105760008781526020818152604080832089845282528083208884528252808320848452825280832054815160c0810183526080810185905260a0810185905260018083168114825282811c63ffffffff1682860152602183901c66ffffffffffffff1682850152605983901c6001600160a01b031660608301528c865284528285208b865284528285208a8652845282852086865290935292205480156102e75765ffffffffffff811660808301526001600160a01b03603082901c1660a08301525b818585815181106102fa576102fa6109fc565b602090810291909101015250505060010161021d565b5095945050505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a59190610c5b565b6001600160a01b03161461046557604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610418573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043c9190610c5b565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6000610475858585610179565b805190915060005b818110156104ff57828181518110610497576104976109fc565b60200260200101516080015165ffffffffffff16421080156104d957506104d7848483815181106104ca576104ca6109fc565b6020026020010151610790565b155b156104f757604051630d69be0f60e41b815260040160405180910390fd5b60010161047d565b508251600090815b81811015610760576000868281518110610523576105236109fc565b60200260200101519050806020015163ffffffff16600003610558576040516346c75bfb60e01b815260040160405180910390fd5b602081015161056d9063ffffffff1685610c78565b9350633b9aca0084111561059457604051638d7ab86f60e01b815260040160405180910390fd5b8051600090156105a2575060015b6001826020015163ffffffff16901b63ffffffff16811790506021826040015166ffffffffffffff16901b66ffffffffffffff1681179050605982606001516001600160a01b0316901b81179050806000808d815260200190815260200160002060008c815260200190815260200160002060008b81526020019081526020016000206000858152602001908152602001600020819055506000826080015165ffffffffffff161180610661575060a08201516001600160a01b031615155b156106c057608082015160a083015160008d81526001602090815260408083208f845282528083208e84528252808320888452909152902065ffffffffffff90921660309190911b6601000000000000600160d01b031617905561071a565b60008b81526001602090815260408083208d845282528083208c845282528083208684529091529020541561071a5760008b81526001602090815260408083208d845282528083208c845282528083208684529091528120555b888a8c7fc66a2cfdab00bc4875c6ae146351d5a8a14cc1225572844a88fca6c427d39ca8853360405161074e929190610c99565b60405180910390a45050600101610507565b506000978852600260209081526040808a20988a5297815287892096895295909552505050919092209190915550565b8151600090815b818110156108935760008582815181106107b3576107b36109fc565b60200260200101519050846020015163ffffffff16816020015163ffffffff161480156107f9575084606001516001600160a01b031681606001516001600160a01b0316145b801561081e57508460a001516001600160a01b03168160a001516001600160a01b0316145b80156108435750846040015166ffffffffffffff16816040015166ffffffffffffff16145b80156108555750845181511515901515145b80156108795750846080015165ffffffffffff16816080015165ffffffffffff1610155b1561088a576001935050505061089a565b50600101610797565b5060009150505b92915050565b6000806000606084860312156108b557600080fd5b505081359360208301359350604090920135919050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b6020808252825182820181905260009190848201906040850190845b8181101561096d5761095a8385516108cc565b9284019260c09290920191600101610947565b50909695505050505050565b6000806000806060858703121561098f57600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156109b557600080fd5b818701915087601f8301126109c957600080fd5b8135818111156109d857600080fd5b8860208260051b85010111156109ed57600080fd5b95989497505060200194505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112610a2857600080fd5b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b60405290565b60405160c0810167ffffffffffffffff81118282101715610a6b57610a6b610a32565b604051601f8201601f1916810167ffffffffffffffff81118282101715610abd57610abd610a32565b604052919050565b803566ffffffffffffff81168114610adc57600080fd5b919050565b6001600160a01b038116811461046557600080fd5b8035610adc81610ae1565b803565ffffffffffff81168114610adc57600080fd5b60006040808336031215610b2a57600080fd5b610b32610a48565b8335815260208085013567ffffffffffffffff80821115610b5257600080fd5b9086019036601f830112610b6557600080fd5b813581811115610b7757610b77610a32565b610b85848260051b01610a94565b818152848101925060c0918202840185019136831115610ba457600080fd5b938501935b82851015610c4857808536031215610bc15760008081fd5b610bc9610a71565b85358015158114610bda5760008081fd5b81528587013563ffffffff81168114610bf35760008081fd5b81880152610c02868a01610ac5565b898201526060610c13818801610af6565b908201526080610c24878201610b01565b9082015260a0610c35878201610af6565b9082015284529384019392850192610ba9565b5093850193909352509195945050505050565b600060208284031215610c6d57600080fd5b815161010781610ae1565b8082018082111561089a57634e487b7160e01b600052601160045260246000fd5b60e08101610ca782856108cc565b6001600160a01b039290921660c0919091015291905056fea26469706673582212209917d8569e2a7dce1c4b19975a2ad6ecc36d182d22c1dbaa460030a189ec7a5964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "972421", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051611f45380380611f4583398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051611eac610099600039600081816101ac015281816113c201526114510152611eac6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370174dcc1161008c5780638b04533a116100665780638b04533a146101e6578063bfc48c9e146101fb578063d7e1ec881461020e578063fe81dd801461022e57600080fd5b806370174dcc14610173578063855a54ed1461018657806388bc2ef3146101a757600080fd5b80631b9b2e5f146100d457806325a61d5c146100fa5780632e6bc58a1461011a57806333f5bd0a1461012d57806343a266c21461014d578063441c0cc514610160575b600080fd5b6100e76100e2366004611a16565b61024e565b6040519081526020015b60405180910390f35b61010d610108366004611a48565b610298565b6040516100f19190611b1c565b61010d610128366004611b2b565b6102b3565b6100e761013b366004611b2b565b60006020819052908152604090205481565b61010d61015b366004611b2b565b610478565b6100e761016e366004611b44565b6105fe565b61010d610181366004611ba5565b61071a565b610199610194366004611b2b565b610a4c565b6040516100f1929190611c3c565b6101ce7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f1565b6101f96101f4366004611b2b565b610aa7565b005b6100e7610209366004611c59565b610c87565b61022161021c366004611b2b565b610cfc565b6040516100f19190611c85565b61024161023c366004611c59565b610d48565b6040516100f19190611c93565b60008260000361026a57610263856001611cf8565b9050610290565b60006102768584611d0b565b90506102828482611d34565b61028c9087611cf8565b9150505b949350505050565b6102a06119ca565b6102aa8383610e90565b90505b92915050565b6102bb6119ca565b60008281526020819052604081205490036102db576102ad600080610e90565b60006102e683610f53565b90506000811561037e576102fa8483610e90565b92506103068484611059565b9050600481600581111561031c5761031c611c04565b14806103395750600381600581111561033757610337611c04565b145b806103555750600081600581111561035357610353611c04565b145b15610361575050919050565b61037784846040015165ffffffffffff16610e90565b92506103cc565b600084815260208190526040902054610398908590610e90565b92505b42836060015165ffffffffffff1611156103cc576103c584846040015165ffffffffffff16610e90565b925061039b565b826080015163ffffffff166000036103e957610290600080610e90565b6103f38484611059565b9050600481600581111561040957610409611c04565b14806104265750600081600581111561042457610424611c04565b145b15610437576102908484600061108b565b61044d84846040015165ffffffffffff16610e90565b9250826080015163ffffffff1660000361046c57610290600080610e90565b6102908484600061108b565b6104806119ca565b60008281526020819052604081205490036104a0576102ad600080610e90565b60006104ab8361120e565b9050801561052b576104bd8382610e90565b915060006104cb8484611059565b905060048160058111156104e1576104e1611c04565b14806104fe575060008160058111156104fc576104fc611c04565b145b1561050a575050919050565b826040015165ffffffffffff1691506105238483610e90565b9250506105d3565b506000828152602081905260409020546105458382610e90565b915060006105538484611059565b90505b600481600581111561056a5761056a611c04565b1415801561058a5750600081600581111561058757610587611c04565b14155b806105a05750826060015165ffffffffffff1642105b156105d157826040015165ffffffffffff1691506105be8483610e90565b92506105ca8484611059565b9050610556565b505b816080015163ffffffff166000036105eb5750919050565b6105f78383600161108b565b9392505050565b60008560000361062b576106248561061a86633b9aca00611d0b565b633b9aca006112ce565b905061070f565b5083831561070f57600061063f8884611d0b565b9050600087828161065257610652611d1e565b04905060008511801561066657506103e881115b156106de5760008a8152600460209081526040808320888452825291829020825180840190935280546001600160701b03168352600101546001600160a81b0316908201819052156106dc57805160208201516001600160701b0390911694506106d9906001600160a81b031683611d0b565b91505b505b60005b8181101561070b576106fb8461061a89633b9aca00611d0b565b9350831561070b576001016106e1565b5050505b979650505050505050565b6107226119ca565b8761072c816113a2565b63ffffffff88111561076357604051638444f64b60e01b81526004810189905263ffffffff60248201526044015b60405180910390fd5b633b9aca0086111561078b576040516321e5c74960e21b81526004810187905260240161075a565b6001600160701b038711156107c357604051632dd7f24160e01b8152600481018890526001600160701b03602482015260440161075a565b826000036107cf574292505b65ffffffffffff6107e08985611cf8565b1115610819576107f08884611cf8565b604051632ce261d560e21b8152600481019190915265ffffffffffff602482015260440161075a565b6001600160a01b0385161561091857846001600160a01b03163b60000361085e5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b6040516301ffc9a760e01b8152634b80c8df60e01b60048201526001600160a01b038616906301ffc9a790602401602060405180830381865afa9250505080156108c5575060408051601f3d908101601f191682019092526108c291810190611d48565b60015b6108ed5760405163045b9cdd60e31b81526001600160a01b038616600482015260240161075a565b806109165760405163045b9cdd60e31b81526001600160a01b038716600482015260240161075a565b505b60008981526020819052604081205490428210156109365742610941565b610941826001611cf8565b905061094f8b828b886114ec565b6001600160a01b038716151580610966575060008a115b806109715750600088115b156109a85760008b8152600360209081526040808320848452909152902060c089901b60a08c901b6001600160a01b038a16171790555b85156109cb5760008b815260016020908152604080832084845290915290208690555b604080518b8152602081018b90529081018990526001600160a01b03881660608201526080810187905260a081018690523360c08201528b9082907f11a490bebff1beffe4bdd210894aca6ea5049427ce4b3c48865717677199cb079060e00160405180910390a3610a3d8b82610e90565b9b9a5050505050505050505050565b610a546119ca565b600082815260208190526040812054610a6d8482610e90565b9250610a9f84846020015165ffffffffffff16856060015165ffffffffffff16866040015165ffffffffffff16611757565b915050915091565b600081815260208190526040812054610ac1908390610e90565b9050806080015163ffffffff1660001480610ae4575060c081015163ffffffff16155b15610aed575050565b60008281526004602090815260408083208483015165ffffffffffff16845290915281206080830151600182015491929163ffffffff90911690610b3d9061c350906001600160a81b0316611cf8565b610b479190611d6a565b836060015165ffffffffffff16610b5e9190611cf8565b90506000814210610b6f5781610b71565b425b90506000846060015165ffffffffffff1682610b8d9190611d0b565b90506000856080015163ffffffff168281610baa57610baa611d1e565b049050610bf587876060015165ffffffffffff16886080015163ffffffff168960a001516001600160701b03168a60c0015163ffffffff168b6020015165ffffffffffff16896105fe565b85546dffffffffffffffffffffffffffff19166001600160701b039190911690811786556001860180546001600160a81b0319166001600160a81b038416908117909155604080518a815260208101939093528201523360608201527f10eae80a31644a6399eaac72c95b18a77049f4192107734621f4cdce85b457729060800160405180910390a150505050505050565b600082600003610c985750806105f7565b6000610ca48486611cf8565b9050828110610cb45790506105f7565b600084610cc18386611d0b565b610ccb9190611d81565b9050610cd78185611d0b565b92505b82841115610cf357610cec8584611cf8565b9250610cda565b50509392505050565b60008181526020819052604081205481610d168483610e90565b905061029084826020015165ffffffffffff16836060015165ffffffffffff16846040015165ffffffffffff16611757565b606082600003610d645760008481526020819052604090205492505b600080610d718686610e90565b90505b602081015165ffffffffffff1615801590610d8e57508382105b15610dbd5781610d9d81611d95565b925050610db686826040015165ffffffffffff16610e90565b9050610d74565b8167ffffffffffffffff811115610dd657610dd6611dae565b604051908082528060200260200182016040528015610e0f57816020015b610dfc6119ca565b815260200190600190039081610df45790505b50925081600003610e215750506105f7565b610e2b8686610e90565b905060005b82811015610e8657818482610e4481611d95565b935081518110610e5657610e56611dc4565b6020026020010181905250828114610e8157610e7e87836040015165ffffffffffff16610e90565b91505b610e30565b5050509392505050565b610e986119ca565b81156102ad5765ffffffffffff82811660208381019190915260008581526002825260408082208683528352808220546001600160701b03811660a080880191909152607082901c86168388015281811c909516606087015260d01c8552868252600383528082208683528352808220546001600160a01b03811660e08701529384901c63ffffffff908116608087015260c094851c1693850193909352948552600181528185209385529290925291205461010082015290565b60008181526020819052604081205490610f6d8383610e90565b9050806060015165ffffffffffff164210610f8b5750600092915050565b805165ffffffffffff16600103610fa25750919050565b604081015165ffffffffffff16610fb76119ca565b610fc18583610e90565b9050806060015165ffffffffffff16421015610ffa57806020015165ffffffffffff169350806040015165ffffffffffff169150610fb7565b6110048585610e90565b9250806080015163ffffffff166000141580156110415750806080015163ffffffff1683606001516110369190611dda565b65ffffffffffff1642105b1561105157506000949350505050565b505050919050565b60006102aa83836020015165ffffffffffff16846060015165ffffffffffff16856040015165ffffffffffff16611757565b6110936119ca565b600082156110c05760808401516110b09063ffffffff1642611d0b565b6110bb906001611cf8565b6110cb565b6110cb426001611cf8565b905060006110f0856060015165ffffffffffff16866080015163ffffffff1684610c87565b90506000611122866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b90506040518061012001604052808265ffffffffffff168152602001876020015165ffffffffffff168152602001876040015165ffffffffffff1681526020018365ffffffffffff168152602001876080015163ffffffff1681526020016111c889896060015165ffffffffffff168a6080015163ffffffff168b60a001516001600160701b03168c60c0015163ffffffff168d6020015165ffffffffffff168a6105fe565b6001600160701b031681526020018760c0015163ffffffff1681526020018760e001516001600160a01b0316815260200187610100015181525093505050509392505050565b600081815260208190526040812054816112288483610e90565b90505b608081015163ffffffff16158015906112655750806080015163ffffffff1681606001516112599190611e00565b65ffffffffffff164210155b15611274575060009392505050565b806060015165ffffffffffff16421061129a576020015165ffffffffffff169392505050565b6112b084826040015165ffffffffffff16610e90565b805190915065ffffffffffff1660000361122b575060009392505050565b6000808060001985870985870292508281108382030391505080600003611308578382816112fe576112fe611d1e565b04925050506105f7565b83811061133957604051630c740aef60e31b815260048101879052602481018690526044810185905260640161075a565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015611409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061142d9190611e1f565b6001600160a01b0316146114e957604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa1580156114a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c49190611e1f565b604051639a007b3960e01b81526001600160a01b03909116600482015260240161075a565b50565b600084815260208190526040812054908190036115205761151a85611512600080610e90565b868587611811565b50611751565b600061152c8683610e90565b9050600061153a8783611059565b9050816060015165ffffffffffff16421015801561156a5750600481600581111561156757611567611c04565b14155b80156115885750600081600581111561158557611585611c04565b14155b806115e75750816060015165ffffffffffff16421080156115c95750816080015163ffffffff1682606001516115be9190611e00565b65ffffffffffff1684105b80156115e7575060048160058111156115e4576115e4611c04565b14155b806116835750816060015165ffffffffffff16421080156116295750816080015163ffffffff16826060015161161d9190611e00565b65ffffffffffff168410155b80156116475750600481600581111561164457611644611c04565b14155b80156116655750600381600581111561166257611662611c04565b14155b80156116835750600081600581111561168057611680611c04565b14155b156116a15761169e87836040015165ffffffffffff16610e90565b91505b60e08201516000906001600160a01b03161561172c578260e001516001600160a01b0316631be052896040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171d9190611e3c565b6117279088611cf8565b61172f565b60005b905061174c8884898885116117445788611746565b845b8a611811565b505050505b50505050565b60008160000361176957506000610290565b60006117758684610e90565b60e08101519091506001600160a01b0316611794576000915050610290565b60e08101516040516328304d2b60e11b81526004810188905260248101879052604481018690526001600160a01b03909116906350609a5690606401602060405180830381865afa1580156117ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611e55565b835165ffffffffffff166000036118695760208085015160008781526002835260408082208783529093529190912065ffffffffffff60701b60709290921b91909116821760a084901b17600160d01b17905561196d565b600061188c856060015165ffffffffffff16866080015163ffffffff1685610c87565b9050600082116118e3576118de86866060015165ffffffffffff16876080015163ffffffff168860a001516001600160701b03168960c0015163ffffffff168a6020015165ffffffffffff16876105fe565b6118f4565b816001146118f157816118f4565b60005b91506000611926866000015165ffffffffffff16876060015165ffffffffffff16886080015163ffffffff168561024e565b60208088015160008a81526002835260408082208a83529093529190912065ffffffffffff60701b60709290921b91909116851760a085901b1760d083901b179055905050505b6000858152602081815260409182902085905585810151915133815265ffffffffffff90921691879186917f470520533918800d64f06ee1795a39e90ff3c27a15350a235e17bd23698a470e910160405180910390a45050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60008060008060808587031215611a2c57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215611a5b57600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151611aa9606084018265ffffffffffff169052565b506080810151611ac1608084018263ffffffff169052565b5060a0810151611adc60a08401826001600160701b03169052565b5060c0810151611af460c084018263ffffffff169052565b5060e0810151611b0f60e08401826001600160a01b03169052565b5061010090810151910152565b61012081016102ad8284611a6a565b600060208284031215611b3d57600080fd5b5035919050565b600080600080600080600060e0888a031215611b5f57600080fd5b505085359760208701359750604087013596606081013596506080810135955060a0810135945060c0013592509050565b6001600160a01b03811681146114e957600080fd5b600080600080600080600060e0888a031215611bc057600080fd5b873596506020880135955060408801359450606088013593506080880135611be781611b90565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052602160045260246000fd5b60068110611c3857634e487b7160e01b600052602160045260246000fd5b9052565b6101408101611c4b8285611a6a565b6105f7610120830184611c1a565b600080600060608486031215611c6e57600080fd5b505081359360208301359350604090920135919050565b602081016102ad8284611c1a565b6020808252825182820181905260009190848201906040850190845b81811015611cd657611cc2838551611a6a565b928401926101209290920191600101611caf565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102ad576102ad611ce2565b818103818111156102ad576102ad611ce2565b634e487b7160e01b600052601260045260246000fd5b600082611d4357611d43611d1e565b500490565b600060208284031215611d5a57600080fd5b815180151581146105f757600080fd5b80820281158282048414176102ad576102ad611ce2565b600082611d9057611d90611d1e565b500690565b600060018201611da757611da7611ce2565b5060010190565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff828116828216039080821115611df957611df9611ce2565b5092915050565b65ffffffffffff818116838216019080821115611df957611df9611ce2565b600060208284031215611e3157600080fd5b81516105f781611b90565b600060208284031215611e4e57600080fd5b5051919050565b600060208284031215611e6757600080fd5b8151600681106105f757600080fdfea264697066735822122008fd90efd08181af760b458b0b1d20dc13e1a8f70bdb0accd499dd44b01d71c864736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "2087275", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e060405234801561001057600080fd5b50604051610d9c380380610d9c83398101604081905261002f916100f2565b6001600160a01b0380851660805280841660a0528190811661006b57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100748161008a565b50506001600160a01b031660c052506101519050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146100ef57600080fd5b50565b6000806000806080858703121561010857600080fd5b8451610113816100da565b6020860151909450610124816100da565b6040860151909350610135816100da565b6060860151909250610146816100da565b939692955090935050565b60805160a05160c051610c0f61018d600039600060a8015260006101b701526000818161011f0152818161086d01526108fc0152610c0f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610141578063c6081d7114610152578063d42ebdb614610165578063f2fde38b1461019f578063f434c914146101b257600080fd5b8063293c4999146100a35780632c1ae882146100e75780633be273fa146100fd578063715018a61461011057806388bc2ef31461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef600081565b6040519081526020016100de565b6100ef61010b366004610994565b6101d9565b610118610383565b005b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b03166100ca565b6101186101603660046109db565b610397565b6100ca610173366004610a1c565b60016020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b6101186101ad366004610a48565b6106b8565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60008284036101f4576101ed82600a610b61565b905061037b565b600085815260016020908152604080832087845282528083208684529091529020546001600160a01b031680156102965760405163d3f5c15f60e01b8152600481018490526001600160a01b0382169063d3f5c15f90602401602060405180830381865afa15801561026a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028e9190610b6d565b91505061037b565b50600085815260016020908152604080832086845282528083208784529091529020546001600160a01b0316801561034f5761028e6102d684600a610b61565b6102e185600a610b61565b60405163d3f5c15f60e01b8152600481018790526001600160a01b0385169063d3f5c15f90602401602060405180830381865afa158015610326573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034a9190610b6d565b6106f6565b85156103625761028e60008686866101d9565b604051631c27981760e21b815260040160405180910390fd5b949350505050565b61038b6107d0565b61039560006107fd565b565b83156103ab576103a68461084d565b6103b3565b6103b36107d0565b826000036103d45760405163ab0f4ad560e01b815260040160405180910390fd5b816000036103f55760405163bb57eae960e01b815260040160405180910390fd5b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b031615158061046057506000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b031615155b15610529576000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03166104ce576000828152600080516020610bba833981519152602090815260408083208684529091529020546001600160a01b03166104ff565b6000838152600080516020610bba833981519152602090815260408083208584529091529020546001600160a01b03165b60405163321bb01960e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b600084815260016020908152604080832086845282528083208584529091529020546001600160a01b031615158061058a5750600084815260016020908152604080832085845282528083208684529091529020546001600160a01b031615155b1561063657600084815260016020908152604080832086845282528083208584529091529020546001600160a01b03166105ee57600084815260016020908152604080832085845282528083208684529091529020546001600160a01b03166104ff565b600084815260016020908152604080832086845282528083208584529091529081902054905163321bb01960e01b81526001600160a01b039091166004820152602401610520565b6000848152600160209081526040808320868452825280832085845282529182902080546001600160a01b0319166001600160a01b038516908117909155825190815233918101919091528391859187917f2a0d2e061403a7d0a76276b49e8d91d3f88325b6dd635422595282672dd1bd19910160405180910390a450505050565b6106c06107d0565b6001600160a01b0381166106ea57604051631e4fbdf760e01b815260006004820152602401610520565b6106f3816107fd565b50565b60008080600019858709858702925082811083820303915050806000036107305783828161072657610726610b86565b04925050506107c9565b83811061076157604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610520565b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6000546001600160a01b031633146103955760405163118cdaa760e01b8152336004820152602401610520565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156108b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d89190610b9c565b6001600160a01b0316146106f357604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa15801561094b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096f9190610b9c565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610520565b600080600080608085870312156109aa57600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b03811681146106f357600080fd5b600080600080608085870312156109f157600080fd5b8435935060208501359250604085013591506060850135610a11816109c6565b939692955090935050565b600080600060608486031215610a3157600080fd5b505081359360208301359350604090920135919050565b600060208284031215610a5a57600080fd5b81356107c9816109c6565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115610ab6578160001904821115610a9c57610a9c610a65565b80851615610aa957918102915b93841c9390800290610a80565b509250929050565b600082610acd57506001610b5b565b81610ada57506000610b5b565b8160018114610af05760028114610afa57610b16565b6001915050610b5b565b60ff841115610b0b57610b0b610a65565b50506001821b610b5b565b5060208310610133831016604e8410600b8410161715610b39575081810a610b5b565b610b438383610a7b565b8060001904821115610b5757610b57610a65565b0290505b92915050565b60006107c98383610abe565b600060208284031215610b7f57600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600060208284031215610bae57600080fd5b81516107c9816109c656fea6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb49a26469706673582212205fb3c7f1dff26d6f3465be978b85e06f75cfe722f57f7e9c0a7176895a971c2c64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "944113", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101606040523480156200001257600080fd5b50306040518060400160405280600781526020016625212a37b5b2b760c91b81525080604051806040016040528060018152602001603160f81b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b815250604051806040016040528060078152602001661a5b9d985b1a5960ca1b8152508160039081620000a0919062000321565b506004620000af828262000321565b50620000c191508390506005620001ac565b61012052620000d2816006620001ac565b61014052815160208084019190912060e052815190820120610100524660a0526200016060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b0381166200019a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620001a581620001e5565b5062000463565b6000602083511015620001cc57620001c48362000237565b9050620001df565b81620001d9848262000321565b5060ff90505b92915050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080829050601f8151111562000265578260405163305a27a960e01b8152600401620001919190620003ed565b805162000272826200043e565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002a557607f821691505b602082108103620002c657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031c576000816000526020600020601f850160051c81016020861015620002f75750805b601f850160051c820191505b81811015620003185782815560010162000303565b5050505b505050565b81516001600160401b038111156200033d576200033d6200027a565b62000355816200034e845462000290565b84620002cc565b602080601f8311600181146200038d5760008415620003745750858301515b600019600386901b1c1916600185901b17855562000318565b600085815260208120601f198616915b82811015620003be578886015182559484019460019091019084016200039d565b5085821015620003dd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b818110156200041d57858101830151858201604001528201620003ff565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620002c65760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612288620004be6000396000610f4e01526000610f2101526000610cbc01526000610c9401526000610bef01526000610c1901526000610c4301526122886000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a6116101045780639ab24eb0116100a2578063d505accf11610071578063d505accf146103f7578063dd62ed3e1461040a578063f1127ed814610443578063f2fde38b1461048257600080fd5b80639ab24eb0146103ab5780639dc29fac146103be578063a9059cbb146103d1578063c3cda520146103e457600080fd5b80638da5cb5b116100de5780638da5cb5b146103605780638e539e8c1461037157806391ddadf41461038457806395d89b41146103a357600080fd5b8063715018a61461032a5780637ecebe001461033257806384b0196e1461034557600080fd5b80633a46b1a811610171578063587cde1e1161014b578063587cde1e146102985780635c19a95c146102dc5780636fcfff45146102ef57806370a082311461031757600080fd5b80633a46b1a81461026a57806340c10f191461027d5780634bf5d7e91461029057600080fd5b806318160ddd116101ad57806318160ddd1461022a57806323b872dd14610240578063313ce567146102535780633644e5151461026257600080fd5b806306fdde03146101d4578063077f224a146101f2578063095ea7b314610207575b600080fd5b6101dc610495565b6040516101e99190611c62565b60405180910390f35b610205610200366004611d34565b610527565b005b61021a610215366004611da8565b610574565b60405190151581526020016101e9565b61023261058e565b6040519081526020016101e9565b61021a61024e366004611dd2565b61059e565b604051601281526020016101e9565b6102326105c2565b610232610278366004611da8565b6105cc565b61020561028b366004611da8565b610652565b6101dc610668565b6102c46102a6366004611e0e565b6001600160a01b039081166000908152600860205260409020541690565b6040516001600160a01b0390911681526020016101e9565b6102056102ea366004611e0e565b6106e0565b6103026102fd366004611e0e565b6106eb565b60405163ffffffff90911681526020016101e9565b610232610325366004611e0e565b6106f6565b610205610714565b610232610340366004611e0e565b610728565b61034d610733565b6040516101e99796959493929190611e29565b600b546001600160a01b03166102c4565b61023261037f366004611ec2565b610779565b61038c6107e3565b60405165ffffffffffff90911681526020016101e9565b6101dc6107ed565b6102326103b9366004611e0e565b6107fc565b6102056103cc366004611da8565b61082c565b61021a6103df366004611da8565b61083e565b6102056103f2366004611eec565b61084c565b610205610405366004611f44565b610909565b610232610418366004611fae565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610456610451366004611fe1565b610a43565b60408051825165ffffffffffff1681526020928301516001600160d01b031692810192909252016101e9565b610205610490366004611e0e565b610a68565b6060600c80546104a490612021565b80601f01602080910402602001604051908101604052809291908181526020018280546104d090612021565b801561051d5780601f106104f25761010080835404028352916020019161051d565b820191906000526020600020905b81548152906001019060200180831161050057829003601f168201915b5050505050905090565b600c805461053490612021565b151590508061054257508251155b1561054c57600080fd5b600c61055884826120ab565b50600d61056583826120ab565b5061056f81610aa6565b505050565b600033610582818585610af8565b60019150505b92915050565b600061059960025490565b905090565b6000336105ac858285610b05565b6105b7858585610b83565b506001949350505050565b6000610599610be2565b6000806105d76107e3565b90508065ffffffffffff16831061061757604051637669fc0f60e11b81526004810184905265ffffffffffff821660248201526044015b60405180910390fd5b61064161062384610d0d565b6001600160a01b038616600090815260096020526040902090610d44565b6001600160d01b0316949350505050565b61065a610dfa565b6106648282610e27565b5050565b6060610672610e5d565b65ffffffffffff166106826107e3565b65ffffffffffff16146106a8576040516301bfc1c560e61b815260040160405180910390fd5b5060408051808201909152601d81527f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000602082015290565b336106648183610e68565b600061058882610eda565b6001600160a01b038116600090815260208190526040812054610588565b61071c610dfa565b6107266000610aa6565b565b600061058882610efc565b600060608060008060006060610747610f1a565b61074f610f47565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b6000806107846107e3565b90508065ffffffffffff1683106107bf57604051637669fc0f60e11b81526004810184905265ffffffffffff8216602482015260440161060e565b6107d36107cb84610d0d565b600a90610d44565b6001600160d01b03169392505050565b6000610599610e5d565b6060600d80546104a490612021565b6001600160a01b038116600090815260096020526040812061081d90610f74565b6001600160d01b031692915050565b610834610dfa565b6106648282610fad565b600033610582818585610b83565b8342111561087057604051632341d78760e11b81526004810185905260240161060e565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906108ea906108e29060a00160405160208183030381529060405280519060200120610fe3565b858585611010565b90506108f6818761103e565b6109008188610e68565b50505050505050565b8342111561092d5760405163313c898160e11b81526004810185905260240161060e565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861097a8c6001600160a01b0316600090815260076020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109d582610fe3565b905060006109e582878787611010565b9050896001600160a01b0316816001600160a01b031614610a2c576040516325c0072360e11b81526001600160a01b0380831660048301528b16602482015260440161060e565b610a378a8a8a610af8565b50505050505050505050565b6040805180820190915260008082526020820152610a618383611091565b9392505050565b610a70610dfa565b6001600160a01b038116610a9a57604051631e4fbdf760e01b81526000600482015260240161060e565b610aa381610aa6565b50565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61056f83838360016110c7565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b7d5781811015610b6e57604051637dc7a0d960e11b81526001600160a01b0384166004820152602481018290526044810183905260640161060e565b610b7d848484840360006110c7565b50505050565b6001600160a01b038316610bad57604051634b637e8f60e11b81526000600482015260240161060e565b6001600160a01b038216610bd75760405163ec442f0560e01b81526000600482015260240161060e565b61056f83838361119c565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015610c3b57507f000000000000000000000000000000000000000000000000000000000000000046145b15610c6557507f000000000000000000000000000000000000000000000000000000000000000090565b610599604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600065ffffffffffff821115610d40576040516306dfcc6560e41b8152603060048201526024810183905260440161060e565b5090565b815460009081816005811115610da3576000610d5f846111a7565b610d699085612181565b60008881526020902090915081015465ffffffffffff9081169087161015610d9357809150610da1565b610d9e816001612194565b92505b505b6000610db187878585611300565b90508015610dec57610dd687610dc8600184612181565b600091825260209091200190565b54600160301b90046001600160d01b0316610def565b60005b979650505050505050565b600b546001600160a01b031633146107265760405163118cdaa760e01b815233600482015260240161060e565b6001600160a01b038216610e515760405163ec442f0560e01b81526000600482015260240161060e565b6106646000838361119c565b600061059943610d0d565b6001600160a01b0382811660008181526008602052604080822080548686166001600160a01b0319821681179092559151919094169392849290917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a461056f8183610ed586611362565b61136d565b6001600160a01b038116600090815260096020526040812054610588906114d9565b6001600160a01b038116600090815260076020526040812054610588565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600561150a565b60606105997f0000000000000000000000000000000000000000000000000000000000000000600661150a565b80546000908015610fa457610f8e83610dc8600184612181565b54600160301b90046001600160d01b0316610a61565b60009392505050565b6001600160a01b038216610fd757604051634b637e8f60e11b81526000600482015260240161060e565b6106648260008361119c565b6000610588610ff0610be2565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080611022888888886115b5565b9250925092506110328282611684565b50909695505050505050565b6001600160a01b038216600090815260076020526040902080546001810190915581811461056f576040516301d4b62360e61b81526001600160a01b03841660048201526024810182905260440161060e565b60408051808201909152600080825260208201526001600160a01b0383166000908152600960205260409020610a61908361173d565b6001600160a01b0384166110f15760405163e602df0560e01b81526000600482015260240161060e565b6001600160a01b03831661111b57604051634a1406b160e11b81526000600482015260240161060e565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610b7d57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161118e91815260200190565b60405180910390a350505050565b61056f8383836117ad565b6000600182116111b5575090565b816001600160801b82106111ce5760809190911c9060401b5b6801000000000000000082106111e95760409190911c9060201b5b64010000000082106112005760209190911c9060101b5b6201000082106112155760109190911c9060081b5b61010082106112295760089190911c9060041b5b6010821061123c5760049190911c9060021b5b600482106112485760011b5b600302600190811c90818581611260576112606121a7565b048201901c90506001818581611278576112786121a7565b048201901c90506001818581611290576112906121a7565b048201901c905060018185816112a8576112a86121a7565b048201901c905060018185816112c0576112c06121a7565b048201901c905060018185816112d8576112d86121a7565b048201901c90506112f78185816112f1576112f16121a7565b04821190565b90039392505050565b60005b8183101561135a5760006113178484611813565b60008781526020902090915065ffffffffffff86169082015465ffffffffffff16111561134657809250611354565b611351816001612194565b93505b50611303565b509392505050565b6000610588826106f6565b816001600160a01b0316836001600160a01b03161415801561138f5750600081115b1561056f576001600160a01b03831615611437576001600160a01b038316600090815260096020526040812081906113d29061182e6113cd8661183a565b61186e565b6001600160d01b031691506001600160d01b03169150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161142c929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561056f576001600160a01b03821660009081526009602052604081208190611470906118a76113cd8661183a565b6001600160d01b031691506001600160d01b03169150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114ca929190918252602082015260400190565b60405180910390a25050505050565b600063ffffffff821115610d40576040516306dfcc6560e41b8152602060048201526024810183905260440161060e565b606060ff83146115245761151d836118b3565b9050610588565b81805461153090612021565b80601f016020809104026020016040519081016040528092919081815260200182805461155c90612021565b80156115a95780601f1061157e576101008083540402835291602001916115a9565b820191906000526020600020905b81548152906001019060200180831161158c57829003601f168201915b50505050509050610588565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115f0575060009150600390508261167a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611644573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116705750600092506001915082905061167a565b9250600091508190505b9450945094915050565b6000826003811115611698576116986121bd565b036116a1575050565b60018260038111156116b5576116b56121bd565b036116d35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116e7576116e76121bd565b036117085760405163fce698f760e01b81526004810182905260240161060e565b600382600381111561171c5761171c6121bd565b03610664576040516335e2f38360e21b81526004810182905260240161060e565b6040805180820190915260008082526020820152826000018263ffffffff168154811061176c5761176c6121d3565b60009182526020918290206040805180820190915291015465ffffffffffff81168252600160301b90046001600160d01b0316918101919091529392505050565b6117b88383836118f2565b6001600160a01b0383166118085760006117d061058e565b90506001600160d01b038082111561180557604051630e58ae9360e11b8152600481018390526024810182905260440161060e565b50505b61056f838383611a1c565b600061182260028484186121e9565b610a6190848416612194565b6000610a61828461220b565b60006001600160d01b03821115610d40576040516306dfcc6560e41b815260d060048201526024810183905260440161060e565b60008061189a61187c6107e3565b61189261188888610f74565b868863ffffffff16565b879190611a92565b915091505b935093915050565b6000610a618284612232565b606060006118c083611aa0565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6001600160a01b03831661191d5780600260008282546119129190612194565b9091555061198f9050565b6001600160a01b038316600090815260208190526040902054818110156119705760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640161060e565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166119ab576002805482900390556119ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0f91815260200190565b60405180910390a3505050565b6001600160a01b038316611a3e57611a3b600a6118a76113cd8461183a565b50505b6001600160a01b038216611a6057611a5d600a61182e6113cd8461183a565b50505b6001600160a01b0383811660009081526008602052604080822054858416835291205461056f9291821691168361136d565b60008061189a858585611ac8565b600060ff8216601f81111561058857604051632cd44ac360e21b815260040160405180910390fd5b825460009081908015611bc1576000611ae687610dc8600185612181565b805490915065ffffffffffff80821691600160301b90046001600160d01b0316908816821115611b2957604051632520601d60e01b815260040160405180910390fd5b8765ffffffffffff168265ffffffffffff1603611b6257825465ffffffffffff16600160301b6001600160d01b03891602178355611bb3565b6040805180820190915265ffffffffffff808a1682526001600160d01b03808a1660208085019182528d54600181018f5560008f81529190912094519151909216600160301b029216919091179101555b945085935061189f92505050565b50506040805180820190915265ffffffffffff80851682526001600160d01b0380851660208085019182528854600181018a5560008a815291822095519251909316600160301b02919093161792019190915590508161189f565b6000815180845260005b81811015611c4257602081850181015186830182015201611c26565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a616020830184611c1c565b634e487b7160e01b600052604160045260246000fd5b600082601f830112611c9c57600080fd5b813567ffffffffffffffff80821115611cb757611cb7611c75565b604051601f8301601f19908116603f01168101908282118183101715611cdf57611cdf611c75565b81604052838152866020858801011115611cf857600080fd5b836020870160208301376000602085830101528094505050505092915050565b80356001600160a01b0381168114611d2f57600080fd5b919050565b600080600060608486031215611d4957600080fd5b833567ffffffffffffffff80821115611d6157600080fd5b611d6d87838801611c8b565b94506020860135915080821115611d8357600080fd5b50611d9086828701611c8b565b925050611d9f60408501611d18565b90509250925092565b60008060408385031215611dbb57600080fd5b611dc483611d18565b946020939093013593505050565b600080600060608486031215611de757600080fd5b611df084611d18565b9250611dfe60208501611d18565b9150604084013590509250925092565b600060208284031215611e2057600080fd5b610a6182611d18565b60ff60f81b881681526000602060e06020840152611e4a60e084018a611c1c565b8381036040850152611e5c818a611c1c565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b81811015611eb057835183529284019291840191600101611e94565b50909c9b505050505050505050505050565b600060208284031215611ed457600080fd5b5035919050565b803560ff81168114611d2f57600080fd5b60008060008060008060c08789031215611f0557600080fd5b611f0e87611d18565b95506020870135945060408701359350611f2a60608801611edb565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611f5f57600080fd5b611f6888611d18565b9650611f7660208901611d18565b95506040880135945060608801359350611f9260808901611edb565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611fc157600080fd5b611fca83611d18565b9150611fd860208401611d18565b90509250929050565b60008060408385031215611ff457600080fd5b611ffd83611d18565b9150602083013563ffffffff8116811461201657600080fd5b809150509250929050565b600181811c9082168061203557607f821691505b60208210810361205557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561056f576000816000526020600020601f850160051c810160208610156120845750805b601f850160051c820191505b818110156120a357828155600101612090565b505050505050565b815167ffffffffffffffff8111156120c5576120c5611c75565b6120d9816120d38454612021565b8461205b565b602080601f83116001811461210e57600084156120f65750858301515b600019600386901b1c1916600185901b1785556120a3565b600085815260208120601f198616915b8281101561213d5788860151825594840194600190910190840161211e565b508582101561215b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b818103818111156105885761058861216b565b808201808211156105885761058861216b565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008261220657634e487b7160e01b600052601260045260246000fd5b500490565b6001600160d01b0382811682821603908082111561222b5761222b61216b565b5092915050565b6001600160d01b0381811683821601908082111561222b5761222b61216b56fea2646970667358221220f1dbfb02434bdd677760af9d3c5fd40692bf90442e7066d00d03701eedd0274d64736f6c63430008170033", + "gas": "2411808", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760c060405234801561001057600080fd5b506040516115e83803806115e883398101604081905261002f9161005e565b6001600160a01b039182166080521660a052610098565b6001600160a01b038116811461005b57600080fd5b50565b6000806040838503121561007157600080fd5b825161007c81610046565b602084015190925061008d81610046565b809150509250929050565b60805160a05161150f6100d9600039600081816101ad0152818161072101526107690152600081816101e701528181610ed30152610f62015261150f6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063878003b81161008c578063b1e6d2a111610066578063b1e6d2a11461021c578063c6c116bd1461022f578063ea78803f14610257578063f12b64a51461028057600080fd5b8063878003b8146101cf57806388bc2ef3146101e2578063aab68bdb1461020957600080fd5b806358178191116100c8578063581781911461014a57806366d542161461017557806375b0d9cd1461019557806382bfefc8146101a857600080fd5b80630f85421b146100ef578063124d91e514610122578063303f5dfa14610137575b600080fd5b61010f6100fd36600461116a565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b610135610130366004611187565b610293565b005b6101356101453660046111bc565b6104ee565b61015d61015836600461124f565b610663565b6040516001600160a01b039091168152602001610119565b61010f6101833660046112d1565b60036020526000908152604090205481565b61010f6101a33660046112d1565b610881565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b61010f6101dd3660046112ea565b610920565b61015d7f000000000000000000000000000000000000000000000000000000000000000081565b610135610217366004611187565b6109d3565b61013561022a366004611316565b610b5e565b61010f61023d3660046112ea565b600060208181529281526040808220909352908152205481565b61015d6102653660046112d1565b6002602052600090815260409020546001600160a01b031681565b61013561028e36600461135e565b610c7d565b8161029d81610eb3565b6000838152600260209081526040808320546001600160a01b038881168552848452828520888652909352908320549116918215610344576040516370a0823160e01b81526001600160a01b0388811660048301528416906370a0823190602401602060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061138e565b610347565b60005b905061035382826113bd565b85111561038c578461036583836113bd565b6040516305dc356160e51b8152600481019290925260248201526044015b60405180910390fd5b600081156103a9578583106103a25760006103a6565b8286035b90505b808603868214610426576001600160a01b0389166000908152602081815260408083208b84529091529020546103e09082906113d0565b6001600160a01b038a166000908152602081815260408083208c84528252808320939093556003905220546104169082906113d0565b6000898152600360205260409020555b604080518881526020810186905290810184905233606082015288906001600160a01b038b16907fa6a919b3314fbbdb84c4a64d62f381f104d0c1747b789163262d2fcfeec292689060800160405180910390a381156104e357604051632770a7eb60e21b81526001600160a01b038a8116600483015260248201849052861690639dc29fac90604401600060405180830381600087803b1580156104ca57600080fd5b505af11580156104de573d6000803e3d6000fd5b505050505b505050505050505050565b826104f881610eb3565b6000848152600260205260409020546001600160a01b03168061052e576040516335fb0a2760e11b815260040160405180910390fd5b6001600160a01b0386166000908152602081815260408083208884529091529020548085111561057b5760405163914993a160e01b81526004810186905260248101829052604401610383565b6001600160a01b038781166000818152602081815260408083208b845282528083208a87039055600382529182902080548a9003905581518581529081018990529287169083015233606083015287917fde5600808a2321d39207ba773327f7a932a4b0b019107fb5a95618006cd0ff009060800160405180910390a36040516340c10f1960e01b81526001600160a01b038581166004830152602482018790528316906340c10f1990604401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b5050505050505050505050565b60008661066f81610eb3565b60008690036106915760405163109f035760e21b815260040160405180910390fd5b60008490036106b357604051630d1a676960e31b815260040160405180910390fd5b6000888152600260205260409020546001600160a01b03161561070557600088815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b8215610764576040805133602082015290810184905261075f907f00000000000000000000000000000000000000000000000000000000000000009060600160405160208183030381529060405280519060200120610ffd565b61078d565b61078d7f0000000000000000000000000000000000000000000000000000000000000000611014565b600089815260026020908152604080832080546001600160a01b0319166001600160a01b0386169081179091558084526001909252918290208b905590519193509089907fb4510654a5884cae50948507300dc482833ed1446cef375e064bef00b6b4ba4e90610808908b908b908b908b908b90339061140c565b60405180910390a36040516303bf912560e11b81526001600160a01b0383169063077f224a90610844908a908a908a908a903090600401611457565b600060405180830381600087803b15801561085e57600080fd5b505af1158015610872573d6000803e3d6000fd5b50505050509695505050505050565b6000818152600360209081526040808320546002909252909120546001600160a01b0316801561091a57806001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d919061138e565b61091790836113bd565b91505b50919050565b6001600160a01b0380831660009081526020818152604080832085845282528083205460029092529091205490911680156109cc576040516370a0823160e01b81526001600160a01b0385811660048301528216906370a0823190602401602060405180830381865afa15801561099b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bf919061138e565b6109c990836113bd565b91505b5092915050565b816109dd81610eb3565b6000838152600260205260409020546001600160a01b03168015801590610a65576040516340c10f1960e01b81526001600160a01b038781166004830152602482018690528316906340c10f1990604401600060405180830381600087803b158015610a4857600080fd5b505af1158015610a5c573d6000803e3d6000fd5b50505050610abf565b6001600160a01b03861660009081526020818152604080832088845290915281208054869290610a969084906113bd565b909155505060008581526003602052604081208054869290610ab99084906113bd565b90915550505b6001600160d01b03610ad086610881565b1115610b0957610adf85610881565b60405163a2f5932960e01b815260048101919091526001600160d01b036024820152604401610383565b6040805185815282151560208201523381830152905186916001600160a01b038916917f0153be209252ccc3b70df14d55d2cc93fa5a74e263b163d9a1caf45152fd0e869181900360600190a3505050505050565b82610b6881610eb3565b6001600160a01b038316610b8f5760405163c3e3a0d160e01b815260040160405180910390fd5b6001600160a01b03851660009081526020818152604080832087845290915290205480831115610bdc5760405163914993a160e01b81526004810184905260248101829052604401610383565b6001600160a01b0380871660009081526020818152604080832089845282528083208786039055928716825281815282822088835290529081208054859290610c269084906113bd565b9091555050604080518481523360208201526001600160a01b03808716928892918a16917f6d86dde1e9f07a2ad1e0f3e611b7bb8343d629126c5ca73f1a5951177d87143f910160405180910390a4505050505050565b81610c8781610eb3565b6001600160a01b038216610cae57604051637661e72d60e01b815260040160405180910390fd5b6000838152600260205260409020546001600160a01b031615610d0057600083815260026020526040908190205490516378ed73ed60e11b81526001600160a01b039091166004820152602401610383565b6001600160a01b03821660009081526001602052604090205415610d55576001600160a01b0382166000908152600160205260409081902054905163487d5b8b60e11b81526004810191909152602401610383565b816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190611499565b60ff16601214610e4257816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e239190611499565b604051630a51f6ff60e41b815260ff9091166004820152602401610383565b600083815260026020908152604080832080546001600160a01b0319166001600160a01b03871690811790915580845260018352928190208690555133815285917f768e177d7f9dac714049e6d43d9ac533cf0c6cc23cddcfe642bfd7a18bee3772910160405180910390a3505050565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610f1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f3e91906114bc565b6001600160a01b031614610ffa57604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610fb1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd591906114bc565b604051639a007b3960e01b81526001600160a01b039091166004820152602401610383565b50565b600061100b83836000611021565b90505b92915050565b600061100e8260006110bf565b60008147101561104d5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008460601b60e81c176000526e5af43d82803e903d91602b57fd5bf38460781b17602052826037600984f590506001600160a01b0381166110b85760405163b06ebf3d60e01b815260040160405180910390fd5b9392505050565b6000814710156110eb5760405163cf47918160e01b815247600482015260248101839052604401610383565b763d602d80600a3d3981f3363d3d373d3d3d363d730000008360601b60e81c176000526e5af43d82803e903d91602b57fd5bf38360781b176020526037600983f090506001600160a01b03811661100e5760405163b06ebf3d60e01b815260040160405180910390fd5b6001600160a01b0381168114610ffa57600080fd5b60006020828403121561117c57600080fd5b81356110b881611155565b60008060006060848603121561119c57600080fd5b83356111a781611155565b95602085013595506040909401359392505050565b600080600080608085870312156111d257600080fd5b84356111dd81611155565b9350602085013592506040850135915060608501356111fb81611155565b939692955090935050565b60008083601f84011261121857600080fd5b50813567ffffffffffffffff81111561123057600080fd5b60208301915083602082850101111561124857600080fd5b9250929050565b6000806000806000806080878903121561126857600080fd5b86359550602087013567ffffffffffffffff8082111561128757600080fd5b6112938a838b01611206565b909750955060408901359150808211156112ac57600080fd5b506112b989828a01611206565b979a9699509497949695606090950135949350505050565b6000602082840312156112e357600080fd5b5035919050565b600080604083850312156112fd57600080fd5b823561130881611155565b946020939093013593505050565b6000806000806080858703121561132c57600080fd5b843561133781611155565b935060208501359250604085013561134e81611155565b9396929550929360600135925050565b6000806040838503121561137157600080fd5b82359150602083013561138381611155565b809150509250929050565b6000602082840312156113a057600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561100e5761100e6113a7565b8181038181111561100e5761100e6113a7565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60808152600061142060808301888a6113e3565b82810360208401526114338187896113e3565b604084019590955250506001600160a01b0391909116606090910152949350505050565b60608152600061146b6060830187896113e3565b828103602084015261147e8186886113e3565b91505060018060a01b03831660408301529695505050505050565b6000602082840312156114ab57600080fd5b815160ff811681146110b857600080fd5b6000602082840312156114ce57600080fd5b81516110b88161115556fea2646970667358221220157d6a8791624ad094427a19718f8350623c61b7a922195b12e7b238f160f1e564736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000b2c36630b8774c8346d980fb9bcca40b28c26df6", + "gas": "1478496", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760a060405234801561001057600080fd5b50604051610ffd380380610ffd83398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610f65610098600039600081816092015281816109c50152610a540152610f656000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806329ed16cd1461006757806388bc2ef31461008d5780638ca53ccd146100cc5780638f1883cc146100df57806399195fde146100f4578063c8668bfd14610114575b600080fd5b61007a610075366004610b08565b610127565b6040519081526020015b60405180910390f35b6100b47f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610084565b61007a6100da366004610b08565b610208565b6100f26100ed366004610b5a565b6102da565b005b610107610102366004610bdd565b6106e2565b6040516100849190610c27565b610107610122366004610bdd565b610848565b600085815260016020908152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561019f57602002820191906000526020600020905b81548152602001906001019080831161018b575b505083519394506000925050505b818110156101fb5760008382815181106101c9576101c9610c85565b6020026020010151905060e081901c86036101f2576001600160e01b031693506101ff92505050565b506001016101ad565b5050505b95945050505050565b60008581526020818152604080832087845282528083206001600160a01b038088168552908352818420908616845282528083208054825181850281018501909352808352849383018282801561027e57602002820191906000526020600020905b81548152602001906001019080831161026a575b505083519394506000925050505b818110156101fb5760008382815181106102a8576102a8610c85565b6020026020010151905060e081901c86036102d1576001600160e01b031693506101ff92505050565b5060010161028c565b836102e4816109a5565b8160005b818110156106d9573685858381811061030357610303610c85565b90506020028101906103159190610c9b565b905060006103266040830183610cbb565b9050905060005b818110156104d357366103436040850185610cbb565b8381811061035357610353610c85565b9050604002019050816000141580156103c557506103746040850185610cbb565b61037f600185610d0c565b81811061038e5761038e610c85565b90506040020160200160208101906103a69190610d4c565b63ffffffff166103bc6040830160208401610d4c565b63ffffffff1611155b156103e357604051632be7371760e21b815260040160405180910390fd5b60006103f26020830183610d85565b6001600160e01b031611156104ca5760008b8152602081815260408083208d845282528220919061042590870187610da0565b6001600160a01b03166001600160a01b03168152602001908152602001600020600085602001602081019061045a9190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061048f9190610d4c565b63ffffffff16901b6104a46020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b5060010161032d565b5060006104e36060840184610cbb565b9050905060005b8181101561069257366105006060860186610cbb565b8381811061051057610510610c85565b90506040020190508160001415801561058257506105316060860186610cbb565b61053c600185610d0c565b81811061054b5761054b610c85565b90506040020160200160208101906105639190610d4c565b63ffffffff166105796040830160208401610d4c565b63ffffffff1611155b156105a05760405163fb88f2b960e01b815260040160405180910390fd5b60006105af6020830183610d85565b6001600160e01b031611156106895760008c81526001602090815260408083208e84528252822091906105e490880188610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008660200160208101906106199190610da0565b6001600160a01b03166001600160a01b0316815260200190815260200160002060e082602001602081019061064e9190610d4c565b63ffffffff16901b6106636020840184610d85565b8254600181018455600093845260209093206001600160e01b0391909116919091179101555b506001016104ea565b5089897fce85126d80e10d0807c5b3c14ac4320e0a8e781c2f945e04accd7919bb9d719f85336040516106c6929190610e65565b60405180910390a35050506001016102e8565b50505050505050565b60008481526020818152604080832086845282528083206001600160a01b0380871685529083528184209085168452825280832080548251818502810185019093528083526060949383018282801561075a57602002820191906000526020600020905b815481526020019060010190808311610746575b50508351939450839250505067ffffffffffffffff81111561077e5761077e610efc565b6040519080825280602002602001820160405280156107c357816020015b604080518082019091526000808252602082015281526020019060019003908161079c5790505b50925060005b8181101561083d5760008382815181106107e5576107e5610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061082957610829610c85565b6020908102919091010152506001016107c9565b505050949350505050565b600084815260016020908152604080832086845282528083206001600160a01b038087168552908352818420908516845282528083208054825181850281018501909352808352606094938301828280156108c257602002820191906000526020600020905b8154815260200190600101908083116108ae575b50508351939450839250505067ffffffffffffffff8111156108e6576108e6610efc565b60405190808252806020026020018201604052801561092b57816020015b60408051808201909152600080825260208201528152602001906001900390816109045790505b50925060005b8181101561083d57600083828151811061094d5761094d610c85565b602002602001015190506040518060400160405280826001600160e01b0316815260200160e083901c63ffffffff1681525085838151811061099157610991610c85565b602090810291909101015250600101610931565b604051632eec7b5560e11b81526004810182905233906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610a0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a309190610f12565b6001600160a01b031614610af057604051632eec7b5560e11b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015610aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac79190610f12565b604051639a007b3960e01b81526001600160a01b03909116600482015260240160405180910390fd5b50565b6001600160a01b0381168114610af057600080fd5b600080600080600060a08688031215610b2057600080fd5b85359450602086013593506040860135610b3981610af3565b92506060860135610b4981610af3565b949793965091946080013592915050565b60008060008060608587031215610b7057600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115610b9657600080fd5b818701915087601f830112610baa57600080fd5b813581811115610bb957600080fd5b8860208260051b8501011115610bce57600080fd5b95989497505060200194505050565b60008060008060808587031215610bf357600080fd5b84359350602085013592506040850135610c0c81610af3565b91506060850135610c1c81610af3565b939692955090935050565b602080825282518282018190526000919060409081850190868401855b82811015610c7857815180516001600160e01b0316855286015163ffffffff16868501529284019290850190600101610c44565b5091979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112610cb157600080fd5b9190910192915050565b6000808335601e19843603018112610cd257600080fd5b83018035915067ffffffffffffffff821115610ced57600080fd5b6020019150600681901b3603821315610d0557600080fd5b9250929050565b81810381811115610d2d57634e487b7160e01b600052601160045260246000fd5b92915050565b803563ffffffff81168114610d4757600080fd5b919050565b600060208284031215610d5e57600080fd5b610d6782610d33565b9392505050565b80356001600160e01b0381168114610d4757600080fd5b600060208284031215610d9757600080fd5b610d6782610d6e565b600060208284031215610db257600080fd5b8135610d6781610af3565b6000808335601e19843603018112610dd457600080fd5b830160208101925035905067ffffffffffffffff811115610df457600080fd5b8060061b3603821315610d0557600080fd5b8183526000602080850194508260005b85811015610e5a576001600160e01b03610e2f83610d6e565b16875263ffffffff610e42848401610d33565b16878401526040968701969190910190600101610e16565b509495945050505050565b6040815260008335610e7681610af3565b6001600160a01b039081166040840152602085013590610e9582610af3565b8082166060850152610eaa6040870187610dbd565b9250608080860152610ec060c086018483610e06565b925050610ed06060870187610dbd565b858403603f190160a0870152610ee7848284610e06565b94505050808516602085015250509392505050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610f2457600080fd5b8151610d6781610af356fea2646970667358221220170dca1b8094f30e7947efc338c9954f7e2262b1ab319a953d27ca93f586ef7a64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75", + "gas": "1124445", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101a06040523480156200001257600080fd5b5060405162005f3938038062005f39833981016040819052620000359162000092565b6001600160a01b03968716608052861660a05296851660c05294841660e0529183166101005282166101205281166101405290811661016052166101805262000169565b6001600160a01b03811681146200008f57600080fd5b50565b60008060008060008060008060006101208a8c031215620000b257600080fd5b8951620000bf8162000079565b60208b0151909950620000d28162000079565b60408b0151909850620000e58162000079565b60608b0151909750620000f88162000079565b60808b01519096506200010b8162000079565b60a08b01519095506200011e8162000079565b60c08b0151909450620001318162000079565b60e08b0151909350620001448162000079565b6101008b0151909250620001588162000079565b809150509295985092959850929598565b60805160a05160c05160e0516101005161012051610140516101605161018051615c0f6200032a6000396000818161027a0152818161095701528181610bc401528181610eec015281816112a2015281816116e901528181611be701528181611ee10152818161229101528181613065015281816130e701528181613253015281816133a60152818161342d01526135ee0152600081816102e001528181611d9201528181612acf0152612f680152600081816105900152818161072701528181610fab015281816114f30152818161175a015281816126ee015281816129ae0152612cce015260008181610328015281816107c901528181610c6301528181610e0c01528181611103015281816113ca0152818161145f01528181611a3601528181611d0001528181611de701528181611f7e01526121d40152600081816102b901526108b201526000818161062a0152612b5601526000818161048f015281816109c501528181610a0701528181610d11015281816115a1015281816118b8015281816128a301528181612c2c015261330d0152600081816103ee01528181610466015261387d0152600081816105dd01526126240152615c0f6000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80637da0a87711610130578063c1ec61ee116100b8578063f12b64a51161007c578063f12b64a5146105c5578063f434c914146105d8578063f905007a146105ff578063fb61b4e314610612578063ffa082441461062557600080fd5b8063c1ec61ee14610543578063c5b19b0e14610565578063c7fb92de14610578578063d4a1b4b11461058b578063ed115957146105b257600080fd5b8063a312889b116100ff578063a312889b146104d7578063b1a50e33146104f7578063b1d596851461050a578063b1e6d2a11461051d578063c02c63ad1461053057600080fd5b80637da0a8771461046457806388bc2ef31461048a57806399d25a34146104b1578063a2d532e6146104c457600080fd5b806339975571116101b35780634fb99a3f116101825780634fb99a3f146103cb578063572b6c05146103de578063581781911461041e5780636567b40614610431578063702a39771461045157600080fd5b80633997557114610372578063405b84fa1461039257806341929626146103a55780634da781a9146103b857600080fd5b80631f47ce69116101fa5780631f47ce69146102db57806325a61d5c14610302578063293c4999146103235780632fa902031461034a578063303f5dfa1461035f57600080fd5b806301ffc9a71461022c578063090db2f1146102545780631d831d5c146102755780631eabcd34146102b4575b600080fd5b61023f61023a366004613ae0565b61064c565b60405190151581526020015b60405180910390f35b610267610262366004613b0a565b6106ef565b60405190815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161024b565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b610315610310366004613b23565b6106fa565b60405161024b929190613d2f565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d610358366004613d64565b6107af565b005b61035d61036d366004613db5565b610916565b610267610380366004613b0a565b60006020819052908152604090205481565b61035d6103a0366004613df4565b6109ba565b6103156103b3366004613b0a565b610b74565b6102676103c6366004613b0a565b610b9f565b6102676103d9366004613eb0565b610c41565b61023f6103ec366004613f88565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b61029c61042c366004613fa5565b610de7565b61044461043f366004614026565b610f79565b60405161024b9190614052565b61035d61045f3660046140b5565b6110e9565b7f000000000000000000000000000000000000000000000000000000000000000061029c565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61023f6104bf366004613b0a565b6111e0565b61035d6104d2366004614100565b6111fe565b6104ea6104e5366004613b0a565b6112db565b60405161024b91906141b9565b61023f610505366004613b0a565b611375565b6102676105183660046141cc565b61138e565b61035d61052b36600461426f565b61166e565b61031561053e366004613b0a565b611718565b610556610551366004613b0a565b611731565b60405161024b939291906142b7565b61035d610573366004614301565b6117e5565b610267610586366004614346565b6119e2565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61035d6105c03660046143c1565b611ce6565b61035d6105d3366004613df4565b611dcd565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b61026761060d366004614413565b611f42565b61035d61062036600461447b565b612055565b61029c7f000000000000000000000000000000000000000000000000000000000000000081565b60006001600160e01b0319821663635a894b60e01b148061067d57506001600160e01b031982166334ce2c7b60e21b145b8061069857506001600160e01b03198216632877540760e01b145b806106b357506001600160e01b0319821663217a87fd60e21b145b806106ce57506001600160e01b03198216633d0d324560e21b145b806106e957506001600160e01b031982166301ffc9a760e01b145b92915050565b60006106e98261216f565b6107026139d3565b61070a613a1f565b604051630969875760e21b815260048101859052602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906325a61d5c9060440161012060405180830381865afa158015610777573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061079b919061474b565b91506107a68261237e565b90509250929050565b6040516331a9108f60e11b815260048101859052610844907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015610818573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083c9190614768565b8560126125b8565b600061084f856126d0565b610100810151909150604c1c60019081161461087e576040516383d788ab60e01b815260040160405180910390fd5b60405163c6081d7160e01b81526004810186905260248101859052604481018490526001600160a01b0383811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063c6081d71906084015b600060405180830381600087803b1580156108f757600080fd5b505af115801561090b573d6000803e3d6000fd5b505050505050505050565b6109228484600b6125b8565b60405163181faefd60e11b81526001600160a01b038581166004830152602482018590526044820184905282811660648301527f0000000000000000000000000000000000000000000000000000000000000000169063303f5dfa906084015b600060405180830381600087803b15801561099c57600080fd5b505af11580156109b0573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a3957604051639653dbed60e01b81523360048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660248201526044015b60405180910390fd5b604080516001600160a01b038316815233602082015283917f01f954abace731a88ab86e71186040cc2be49fe517ea06bc0d24f25b82b83456910160405180910390a260008281526020819052604090205415610a9b57610a998261216f565b505b6040516301ffc9a760e01b815263217a87fd60e21b60048201526001600160a01b038216906301ffc9a790602401602060405180830381865afa158015610ae6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b0a9190614785565b15610b70576040516362d8cd8760e11b8152306004820152602481018390526001600160a01b0382169063c5b19b0e90604401600060405180830381600087803b158015610b5757600080fd5b505af1158015610b6b573d6000803e3d6000fd5b505050505b5050565b610b7c6139d3565b610b84613a1f565b610b8d836126d0565b9150610b988261237e565b9050915091565b6000818152602081905260408082205490516375b0d9cd60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906375b0d9cd90602401602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3791906147a2565b6106e991906147d1565b60405163180e2b1160e31b81526001600160a01b038a811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063c0715888906024016020604051808303816000875af1158015610cae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cd291906147a2565b90508715610cf5576000818152600160205260409020610cf3898b83614866565b505b6040516338a73f9960e11b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b158015610d5d57600080fd5b505af1158015610d71573d6000803e3d6000fd5b50505050610d80818686612763565b6000610d8d8289896128da565b90507f8dac501f24f52bda9ebdfa6a1789878c1d1e23823c771f7d52b5ba41261b0f4581838c8c8888610dbe612bf4565b604051610dd1979695949392919061494f565b60405180910390a1509998505050505050505050565b6040516331a9108f60e11b815260048101879052600090610e7f906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015610e53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e779190614768565b8860076125b8565b8115610ed557610e8d612bf4565b82604051602001610ebc92919060609290921b6bffffffffffffffffffffffff19168252601482015260340190565b6040516020818303038152906040528051906020012091505b604051635817819160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635817819190610f2b908a908a908a908a908a908a9060040161499f565b6020604051808303816000875af1158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190614768565b979650505050505050565b6040516301fd03bb60e71b81526004810184905260248101839052604481018290526060906000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fe81dd8090606401600060405180830381865afa158015610ff2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261101a9190810190614a03565b8051909150806001600160401b03811115611037576110376144f6565b60405190808252806020026020018201604052801561107057816020015b61105d613abb565b8152602001906001900390816110555790505b50925060005b818110156110df57600083828151811061109257611092614aa8565b6020026020010151905060405180604001604052808281526020016110b68361237e565b8152508583815181106110cb576110cb614aa8565b602090810291909101015250600101611076565b5050509392505050565b6040516331a9108f60e11b81526004810184905261117e907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611152573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111769190614768565b8460066125b8565b6000838152600160205260409020611197828483614866565b50827f0f3d240fe5efaeda774d27bf0425f932ddd2098297b26de8070d6c8bef534b1683836111c4612bf4565b6040516111d393929190614abe565b60405180910390a2505050565b60006111f36111ee836126d0565b61237e565b610120015192915050565b61121b8585600a61121682611211612bf4565b612c03565b612ca0565b8260000361123c576040516346545c9960e11b815260040160405180910390fd5b83856001600160a01b03167fdf04e13ee4fcd48a81ab2fd114757093740a3efa9b6475d86e05878b4c59d079858585611273612bf4565b6040516112839493929190614aea565b60405180910390a360405163124d91e560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063124d91e5906108dd90889088908890600401614b1d565b600160205260009081526040902080546112f4906147e4565b80601f0160208091040260200160405190810160405280929190818152602001828054611320906147e4565b801561136d5780601f106113425761010080835404028352916020019161136d565b820191906000526020600020905b81548152906001019060200180831161135057829003601f168201915b505050505081565b60006113836111ee836126d0565b610100015192915050565b60008581036113b057604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101899052611445907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143d9190614768565b8960026125b8565b6040516331a9108f60e11b8152600481018990526114da907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d29190614768565b89600e6125b8565b6040516319fade8560e11b8152600481018990526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333f5bd0a90602401602060405180830381865afa158015611542573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156691906147a2565b1115611585576040516319d957db60e01b815260040160405180910390fd5b6040516338a73f9960e11b8152600481018990523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063714e7f3290604401600060405180830381600087803b1580156115ed57600080fd5b505af1158015611601573d6000803e3d6000fd5b50505050611610888686612763565b61161b8888886128da565b90507f23164adda696b19106c2eef50ba44461997682bf5aeb9fdb383117fa9952cc758189858561164a612bf4565b60405161165b959493929190614b3e565b60405180910390a1979650505050505050565b61167a8484600c6125b8565b6000611685846126d0565b61010081015190915060451c6001908116036116b457604051636af4c57760e01b815260040160405180910390fd5b60405163b1e6d2a160e01b81526001600160a01b038681166004830152602482018690528481166044830152606482018490527f0000000000000000000000000000000000000000000000000000000000000000169063b1e6d2a1906084016108dd565b6117206139d3565b611728613a1f565b610b8d83612cb0565b6117396139d3565b611741613a1f565b60405163855a54ed60e01b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063855a54ed9060240161014060405180830381865afa1580156117aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117ce9190614b78565b90935090506117dc8361237e565b91509193909250565b60006117ef612bf4565b9050826001600160a01b0316816001600160a01b03161461183657604051635284422b60e11b81526001600160a01b03808316600483015284166024820152604401610a30565b6040516301ffc9a760e01b81526334ce2c7b60e21b60048201526001600160a01b038416906301ffc9a790602401602060405180830381865afa158015611881573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a59190614785565b80156119505750826001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635dd8f6aa846040518263ffffffff1660e01b815260040161190491815260200190565b602060405180830381865afa158015611921573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119459190614768565b6001600160a01b0316145b156119dd5760405163a312889b60e01b8152600481018390526001600160a01b0384169063a312889b90602401600060405180830381865afa15801561199a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119c29190810190614bab565b6000838152600160205260409020906119db9082614c3e565b505b505050565b600085600003611a055760405163064fae8d60e41b815260040160405180910390fd5b600080611a11896126d0565b6040516331a9108f60e11b8152600481018b9052909150611af3906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690636352211e90602401602060405180830381865afa158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190614768565b8a6009611ab082611211612bf4565b80611adb575061010085015160521c6001600160a01b0316611ad0612bf4565b6001600160a01b0316145b8061121657506112168d86611aee612bf4565b612d05565b602081015165ffffffffffff1615801590611b1a575061010081015160461c600190811614155b8015611b2f5750611b2d89611211612bf4565b155b8015611b5c575061010081015160521c6001600160a01b0316611b50612bf4565b6001600160a01b031614155b8015611b725750611b708982611aee612bf4565b155b15611b9057604051632475c19d60e21b815260040160405180910390fd5b83611b9c576000611ba6565b61010081015160041c5b61ffff1691506127108214611c5357611bcd88611bc584612710614cfd565b612710612dad565b60405163aab68bdb60e01b81529093506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb90611c20908a908d908890600401614b1d565b600060405180830381600087803b158015611c3a57600080fd5b505af1158015611c4e573d6000803e3d6000fd5b505050505b88876001600160a01b03167fe6fee9c572244c0c2238c3112ac12d411750a7ee00eeebd32521c3e5a666c14b8a868a8a88611c8c612bf4565b604051611c9e96959493929190614d10565b60405180910390a38115611cda57611cb68389614cfd565b60008a81526020819052604081208054909190611cd49084906147d1565b90915550505b50509695505050505050565b6040516331a9108f60e11b815260048101859052611d7b907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611d4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d739190614768565b8560116125b8565b60405163ed11595760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063ed11595790610982908790879087908790600401614d7e565b6040516331a9108f60e11b815260048101839052611e62907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e5a9190614768565b8360086125b8565b6000611e6d836126d0565b9050806020015165ffffffffffff16600003611e8f57611e8c83612cb0565b90505b61010081015160471c600190811614611ebb57604051631b6846ab60e01b815260040160405180910390fd5b60405163f12b64a560e01b8152600481018490526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063f12b64a590604401600060405180830381600087803b158015611f2557600080fd5b505af1158015611f39573d6000803e3d6000fd5b50505050505050565b6000838103611f6457604051632b72d06560e01b815260040160405180910390fd5b6040516331a9108f60e11b815260048101879052611ff9907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015611fcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff19190614768565b8760026125b8565b6120048686866128da565b90507f24d02d612b06648bfa2000859f3de7e6f336139eaf5877c24b0d21320625286281878585612033612bf4565b604051612044959493929190614b3e565b60405180910390a195945050505050565b33301461206157600080fd5b6120756001600160a01b0386168886612e81565b60405163fef4325760e01b81526001600160a01b0388169063fef43257906120ae9089908990899089906000908a908a90600401614f07565b6020604051808303816000875af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906147a2565b50604051636eb1769f60e11b81523060048201526001600160a01b03888116602483015286169063dd62ed3e90604401602060405180830381865afa15801561213e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216291906147a2565b15611f3957611f39614f62565b6000818152602081905260408120549081900361219f576040516364d7bdaf60e01b815260040160405180910390fd5b60006121aa836126d0565b600084815260208190526040808220829055516331a9108f60e11b815260048101869052919250907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa158015612223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122479190614768565b90506000831561226f5761226a85846020015165ffffffffffff16600187612f3f565b612272565b60005b905080156122fd5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906122ca90859089908690600401614b1d565b600060405180830381600087803b1580156122e457600080fd5b505af11580156122f8573d6000803e3d6000fd5b505050505b84836000015165ffffffffffff16846020015165ffffffffffff167f32411cac611c47cfe73afc187645c9cf3aec828d5f91780138d8421378fc0edb858886612344612bf4565b604080516001600160a01b0395861681526020810194909452830191909152909116606082015260800160405180910390a4505050919050565b612386613a1f565b6040518061026001604052806123a184610100015160041c90565b61ffff1681526020016123b984610100015160141c90565b61ffff1681526020016123d184610100015160241c90565b63ffffffff1681526020016123f3846101000151600160449190911c81161490565b15158152602001612411846101000151600160459190911c81161490565b1515815260200161242f846101000151600160469190911c81161490565b1515815260200161244d846101000151600160479190911c81161490565b1515815260200161246b846101000151600160489190911c81161490565b15158152602001612489846101000151600160499190911c81161490565b151581526020016124a78461010001516001604a9190911c81161490565b151581526020016124c58461010001516001604b9190911c81161490565b151581526020016124e38461010001516001604c9190911c81161490565b151581526020016125018461010001516001604d9190911c81161490565b1515815260200161251f8461010001516001604e9190911c81161490565b1515815260200161253d8461010001516001604f9190911c81161490565b1515815260200161255b846101000151600160509190911c81161490565b15158152602001612579846101000151600160519190911c81161490565b1515815260200161258f84610100015160521c90565b6001600160a01b031681526020016125ac84610100015160f21c90565b61ffff16905292915050565b60006125c2612bf4565b9050836001600160a01b0316816001600160a01b0316141580156126915750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa15801561266b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268f9190614785565b155b156119db57604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a30565b6126d86139d3565b6040516321d1336160e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c2906024015b61012060405180830381865afa15801561273f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e9919061474b565b6000816001600160401b0381111561277d5761277d6144f6565b6040519080825280602002602001820160405280156127a6578160200160208202803683370190505b50905060005b828110156128855760008484838181106127c8576127c8614aa8565b90506020028101906127da9190614f78565b6127e390614f98565b805160208201516040516304a6e43960e31b81529293506001600160a01b039091169163253721c89161281b918a9190600401615095565b600060405180830381600087803b15801561283557600080fd5b505af1158015612849573d6000803e3d6000fd5b50505050806000015183838151811061286457612864614aa8565b6001600160a01b0390921660209283029190910190910152506001016127ac565b5081156119db5760405163104373fb60e31b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063821b9fd890610982908790859060040161510d565b6000805b82811015612bec5760008484838181106128fa576128fa614aa8565b905060200281019061290c9190615166565b61291590615649565b905061271061ffff168160a001516000015161ffff16111561295f5760a08101515160405163a162453f60e01b815261ffff90911660048201526127106024820152604401610a30565b61271061ffff168160a001516020015161ffff1611156129aa5760a0810151602001516040516318e037d360e11b815261ffff90911660048201526127106024820152604401610a30565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370174dcc8884602001518560400151866060015187608001516129fd8960a001516136c3565b895160405160e089901b6001600160e01b0319168152600481019790975263ffffffff95861660248801526001600160701b0390941660448701529390911660648501526001600160a01b0316608484015260a483019190915265ffffffffffff1660c482015260e401610120604051808303816000875af1158015612a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aab919061474b565b602081015160c084015160405163ed11595760e01b81529293506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263ed11595792612b04928c9260040161577e565b600060405180830381600087803b158015612b1e57600080fd5b505af1158015612b32573d6000803e3d6000fd5b505050602082015160e08401516040516323c620f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350638f1883cc92612b8c928c92600401615897565b600060405180830381600087803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50612bcc925060019150879050614cfd565b8303612be257806020015165ffffffffffff1693505b50506001016128de565b509392505050565b6000612bfe61386d565b905090565b604051636e49181f60e01b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690636e49181f90604401602060405180830381865afa158015612c75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c999190614785565b9392505050565b806119db576119db8484846125b8565b612cb86139d3565b604051631735e2c560e11b8152600481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e6bc58a90602401612721565b600080612d1784610100015160521c90565b6001600160a01b031614158015612da5575061010083015160521c604051630cef9c1160e31b8152600481018690526001600160a01b038481166024830152919091169063677ce08890604401602060405180830381865afa158015612d81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da59190614785565b949350505050565b6000808060001985870985870292508281108382030391505080600003612de757838281612ddd57612ddd615945565b0492505050612c99565b838110612e1857604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a30565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052612ed284826138e2565b6119db576040516001600160a01b03848116602483015260006044830152612f3591869182169063095ea7b3906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613931565b6119db8482613931565b6040516369e11cc560e01b815260048101859052602481018490526044810183905281906000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906369e11cc590606401600060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612fdf919081019061595b565b805190915060005b818110156136b857600083828151811061300357613003614aa8565b60200260200101519050600061302e87836020015163ffffffff16633b9aca0063ffffffff16612dad565b905080156136695760a08201516001600160a01b0316156131fb5760a082015160405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163aab68bdb9161309d91908e908690600401614b1d565b600060405180830381600087803b1580156130b757600080fd5b505af11580156130cb573d6000803e3d6000fd5b505060405163ea78803f60e01b8152600481018d9052600092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316915063ea78803f90602401602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b9190614768565b90508260a001516001600160a01b0316630dcdc5706040518060c00160405280846001600160a01b03168152602001858152602001601281526020018e81526020018c8152602001868152506040518263ffffffff1660e01b81526004016131c39190615a60565b600060405180830381600087803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050505061365c565b60608201516000906001600160a01b031661321d57613218612bf4565b613223565b82606001515b9050826040015166ffffffffffffff166000146135c55760405163ea78803f60e01b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ea78803f90602401602060405180830381865afa1580156132a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c69190614768565b905060006001600160a01b0382161561337d576040858101519051630862026560e41b815266ffffffffffffff90911660048201526001600160a01b0383811660248301527f00000000000000000000000000000000000000000000000000000000000000001690638620265090604401602060405180830381865afa158015613354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133789190614768565b613380565b60005b90506001600160a01b038216158061339f57506001600160a01b038116155b1561342b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb848f876040518463ffffffff1660e01b81526004016133f493929190614b1d565b600060405180830381600087803b15801561340e57600080fd5b505af1158015613422573d6000803e3d6000fd5b505050506135be565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663aab68bdb308f876040518463ffffffff1660e01b815260040161347b93929190614b1d565b600060405180830381600087803b15801561349557600080fd5b505af11580156134a9573d6000803e3d6000fd5b5050505060008d6040516020016134c291815260200190565b60408051601f198184030181528282529088015163fb61b4e360e01b8352909250309163fb61b4e3916135029186919088908b908b908990600401615ab4565b600060405180830381600087803b15801561351c57600080fd5b505af192505050801561352d575060015b6135bc573d80801561355b576040519150601f19603f3d011682016040523d82523d6000602084013e613560565b606091505b508e7f96c3ac00fad4cbb9b9ae8df2dbf20a95984c04efde99cdeeaae754dbb44106ce88888461358e612bf4565b60405161359e9493929190615b0a565b60405180910390a26135ba6001600160a01b03851686886139a2565b505b505b505061365a565b6001600160a01b03811661dead1461365a5760405163aab68bdb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063aab68bdb906136279084908f908790600401614b1d565b600060405180830381600087803b15801561364157600080fd5b505af1158015613655573d6000803e3d6000fd5b505050505b505b6136668187614cfd565b95505b87898b7f61e0b98c9423afbd069cc95184e80d30166d0e9a3f747259d6a434491f478e228585613697612bf4565b6040516136a693929190615b4c565b60405180910390a45050600101612fe7565b505050949350505050565b6000600190506004826000015161ffff16901b811790506014826020015161ffff16901b811790506024826040015163ffffffff16901b811790508160600151156137145768100000000000000000175b81608001511561372a5768200000000000000000175b8160a00151156137405768400000000000000000175b8160c00151156137565768800000000000000000175b8160e001511561376d576901000000000000000000175b81610100015115613785576902000000000000000000175b8161012001511561379d576904000000000000000000175b816101400151156137b5576908000000000000000000175b816101600151156137cd576910000000000000000000175b816101800151156137e5576920000000000000000000175b816101a00151156137fd576940000000000000000000175b816101c0015115613815576980000000000000000000175b816101e001511561382757600160501b175b8161020001511561383957600160511b175b6102208201516102409092015160529290921b600160521b600160f21b03161760f29190911b6001600160f21b0319161790565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156138aa5750808210155b156138da576000366138bc8385614cfd565b6138c7928290615b7a565b6138d091615ba4565b60601c9250505090565b339250505090565b6000806000806020600086516020880160008a5af192503d91506000519050828015613927575081156139185780600114613927565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180613954576040513d6000823e3d81fd5b50506000513d9150811561396c578060011415613979565b6001600160a01b0384163b155b156119db57604051635274afe760e01b81526001600160a01b0385166004820152602401610a30565b6040516001600160a01b038381166024830152604482018390526119dd91859182169063a9059cbb90606401612f03565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6040805161026081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101829052610220810182905261024081019190915290565b6040518060400160405280613ace6139d3565b8152602001613adb613a1f565b905290565b600060208284031215613af257600080fd5b81356001600160e01b031981168114612c9957600080fd5b600060208284031215613b1c57600080fd5b5035919050565b60008060408385031215613b3657600080fd5b50508035926020909101359150565b65ffffffffffff808251168352806020830151166020840152806040830151166040840152506060810151613b84606084018265ffffffffffff169052565b506080810151613b9c608084018263ffffffff169052565b5060a0810151613bb760a08401826001600160701b03169052565b5060c0810151613bcf60c084018263ffffffff169052565b5060e0810151613bea60e08401826001600160a01b03169052565b5061010090810151910152565b805161ffff1682526020810151613c14602084018261ffff169052565b506040810151613c2c604084018263ffffffff169052565b506060810151613c40606084018215159052565b506080810151613c54608084018215159052565b5060a0810151613c6860a084018215159052565b5060c0810151613c7c60c084018215159052565b5060e0810151613c9060e084018215159052565b5061010081810151151590830152610120808201511515908301526101408082015115159083015261016080820151151590830152610180808201511515908301526101a0808201511515908301526101c0808201511515908301526101e08082015115159083015261020080820151151590830152610220808201516001600160a01b0316908301526102408082015161ffff8116828501526119db565b6103808101613d3e8285613b45565b612c99610120830184613bf7565b6001600160a01b0381168114613d6157600080fd5b50565b60008060008060808587031215613d7a57600080fd5b8435935060208501359250604085013591506060850135613d9a81613d4c565b939692955090935050565b8035613db081613d4c565b919050565b60008060008060808587031215613dcb57600080fd5b8435613dd681613d4c565b935060208501359250604085013591506060850135613d9a81613d4c565b60008060408385031215613e0757600080fd5b823591506020830135613e1981613d4c565b809150509250929050565b60008083601f840112613e3657600080fd5b5081356001600160401b03811115613e4d57600080fd5b602083019150836020828501011115613e6557600080fd5b9250929050565b60008083601f840112613e7e57600080fd5b5081356001600160401b03811115613e9557600080fd5b6020830191508360208260051b8501011115613e6557600080fd5b600080600080600080600080600060a08a8c031215613ece57600080fd5b8935613ed981613d4c565b985060208a01356001600160401b0380821115613ef557600080fd5b613f018d838e01613e24565b909a50985060408c0135915080821115613f1a57600080fd5b613f268d838e01613e6c565b909850965060608c0135915080821115613f3f57600080fd5b613f4b8d838e01613e6c565b909650945060808c0135915080821115613f6457600080fd5b50613f718c828d01613e24565b915080935050809150509295985092959850929598565b600060208284031215613f9a57600080fd5b8135612c9981613d4c565b60008060008060008060808789031215613fbe57600080fd5b8635955060208701356001600160401b0380821115613fdc57600080fd5b613fe88a838b01613e24565b9097509550604089013591508082111561400157600080fd5b5061400e89828a01613e24565b979a9699509497949695606090950135949350505050565b60008060006060848603121561403b57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b818110156140a9578351614083848251613b45565b850151614094610120850182613bf7565b5092840192610380929092019160010161406e565b50909695505050505050565b6000806000604084860312156140ca57600080fd5b8335925060208401356001600160401b038111156140e757600080fd5b6140f386828701613e24565b9497909650939450505050565b60008060008060006080868803121561411857600080fd5b853561412381613d4c565b9450602086013593506040860135925060608601356001600160401b0381111561414c57600080fd5b61415888828901613e24565b969995985093965092949392505050565b60005b8381101561418457818101518382015260200161416c565b50506000910152565b600081518084526141a5816020860160208601614169565b601f01601f19169290920160200192915050565b602081526000612c99602083018461418d565b60008060008060008060006080888a0312156141e757600080fd5b8735965060208801356001600160401b038082111561420557600080fd5b6142118b838c01613e6c565b909850965060408a013591508082111561422a57600080fd5b6142368b838c01613e6c565b909650945060608a013591508082111561424f57600080fd5b5061425c8a828b01613e24565b989b979a50959850939692959293505050565b6000806000806080858703121561428557600080fd5b843561429081613d4c565b93506020850135925060408501356142a781613d4c565b9396929550929360600135925050565b6103a081016142c68286613b45565b6142d4610120830185613bf7565b600683106142f257634e487b7160e01b600052602160045260246000fd5b82610380830152949350505050565b6000806040838503121561431457600080fd5b823561431f81613d4c565b946020939093013593505050565b8015158114613d6157600080fd5b8035613db08161432d565b60008060008060008060a0878903121561435f57600080fd5b8635955060208701359450604087013561437881613d4c565b935060608701356001600160401b0381111561439357600080fd5b61439f89828a01613e24565b90945092505060808701356143b38161432d565b809150509295509295509295565b600080600080606085870312156143d757600080fd5b843593506020850135925060408501356001600160401b038111156143fb57600080fd5b61440787828801613e6c565b95989497509550505050565b60008060008060006060868803121561442b57600080fd5b8535945060208601356001600160401b038082111561444957600080fd5b61445589838a01613e6c565b9096509450604088013591508082111561446e57600080fd5b5061415888828901613e24565b600080600080600080600060c0888a03121561449657600080fd5b87356144a181613d4c565b96506020880135955060408801356144b881613d4c565b94506060880135935060808801356144cf81613d4c565b925060a08801356001600160401b038111156144ea57600080fd5b61425c8a828b01613e24565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561452f5761452f6144f6565b60405290565b604080519081016001600160401b038111828210171561452f5761452f6144f6565b604051606081016001600160401b038111828210171561452f5761452f6144f6565b60405161026081016001600160401b038111828210171561452f5761452f6144f6565b60405160c081016001600160401b038111828210171561452f5761452f6144f6565b604051608081016001600160401b038111828210171561452f5761452f6144f6565b60405161010081016001600160401b038111828210171561452f5761452f6144f6565b604051601f8201601f191681016001600160401b038111828210171561462b5761462b6144f6565b604052919050565b65ffffffffffff81168114613d6157600080fd5b8051613db081614633565b63ffffffff81168114613d6157600080fd5b8051613db081614652565b6001600160701b0381168114613d6157600080fd5b8051613db08161466f565b8051613db081613d4c565b600061012082840312156146ad57600080fd5b6146b561450c565b90506146c082614647565b81526146ce60208301614647565b60208201526146df60408301614647565b60408201526146f060608301614647565b606082015261470160808301614664565b608082015261471260a08301614684565b60a082015261472360c08301614664565b60c082015261473460e0830161468f565b60e082015261010080830151818301525092915050565b6000610120828403121561475e57600080fd5b612c99838361469a565b60006020828403121561477a57600080fd5b8151612c9981613d4c565b60006020828403121561479757600080fd5b8151612c998161432d565b6000602082840312156147b457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106e9576106e96147bb565b600181811c908216806147f857607f821691505b60208210810361481857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156119dd576000816000526020600020601f850160051c810160208610156148475750805b601f850160051c820191505b81811015610b6b57828155600101614853565b6001600160401b0383111561487d5761487d6144f6565b6148918361488b83546147e4565b8361481e565b6000601f8411600181146148c557600085156148ad5750838201355b600019600387901b1c1916600186901b17835561491f565b600083815260209020601f19861690835b828110156148f657868501358255602094850194600190920191016148d6565b50868210156149135760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b87815286602082015260a06040820152600061496f60a083018789614926565b8281036060840152614982818688614926565b91505060018060a01b038316608083015298975050505050505050565b8681526080602082015260006149b9608083018789614926565b82810360408401526149cc818688614926565b915050826060830152979650505050505050565b60006001600160401b038211156149f9576149f96144f6565b5060051b60200190565b60006020808385031215614a1657600080fd5b82516001600160401b03811115614a2c57600080fd5b8301601f81018513614a3d57600080fd5b8051614a50614a4b826149e0565b614603565b808282526020820191506101206020818502860101935088841115614a7457600080fd5b6020850194505b83851015614a9c57614a8d898661469a565b83529384019391850191614a7b565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b604081526000614ad2604083018587614926565b905060018060a01b0383166020830152949350505050565b848152606060208201526000614b04606083018587614926565b905060018060a01b038316604083015295945050505050565b6001600160a01b039390931683526020830191909152604082015260600190565b858152846020820152608060408201526000614b5e608083018587614926565b905060018060a01b03831660608301529695505050505050565b6000806101408385031215614b8c57600080fd5b614b96848461469a565b915061012083015160068110613e1957600080fd5b600060208284031215614bbd57600080fd5b81516001600160401b0380821115614bd457600080fd5b818401915084601f830112614be857600080fd5b815181811115614bfa57614bfa6144f6565b614c0d601f8201601f1916602001614603565b9150808252856020828501011115614c2457600080fd5b614c35816020840160208601614169565b50949350505050565b81516001600160401b03811115614c5757614c576144f6565b614c6b81614c6584546147e4565b8461481e565b602080601f831160018114614ca05760008415614c885750858301515b600019600386901b1c1916600185901b178555610b6b565b600085815260208120601f198616915b82811015614ccf57888601518255948401946001909101908401614cb0565b5085821015614ced5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156106e9576106e96147bb565b86815285602082015260a060408201526000614d3060a083018688614926565b6060830194909452506001600160a01b0391909116608090910152949350505050565b8035613db081614652565b66ffffffffffffff81168114613d6157600080fd5b8035613db081614633565b6000606080830187845260208781860152604060606040870152828784526080935060808701905060808860051b8801018960005b8a811015614ef557898303607f190184528135368d9003603e19018112614dd957600080fd5b8c01803584528386018782013536839003601e19018112614df957600080fd5b9091018781019190356001600160401b03811115614e1657600080fd5b60c08082023603841315614e2957600080fd5b868a01899052918190526000918b87015b82841015614edf578435614e4d8161432d565b15158152848b0135614e5e81614652565b63ffffffff16818c0152848a0135614e7581614d5e565b66ffffffffffffff16818b0152848d0135614e8f81613d4c565b6001600160a01b0316818e0152614ea7858d01614d73565b65ffffffffffff168c82015260a0614ec0868201613da5565b6001600160a01b03169082015293810193600193909301928101614e3a565b978a019796505050928701925050600101614db3565b50909c9b505050505050505050505050565b878152600060018060a01b03808916602084015287604084015280871660608401525084608083015260e060a0830152600060e08301526101008060c0840152614f548184018587614926565b9a9950505050505050505050565b634e487b7160e01b600052600160045260246000fd5b60008235603e19833603018112614f8e57600080fd5b9190910192915050565b60006040808336031215614fab57600080fd5b614fb3614535565b8335614fbe81613d4c565b81526020848101356001600160401b03811115614fda57600080fd5b850136601f820112614feb57600080fd5b8035614ff9614a4b826149e0565b8181526060918202830184019184820191903684111561501857600080fd5b938501935b83851015615082578085360312156150355760008081fd5b61503d614557565b853561504881613d4c565b81528587013560ff8116811461505e5760008081fd5b818801528589013561506f81614652565b818a01528352938401939185019161501d565b5093850193909352509195945050505050565b60006040808301858452602060406020860152818651808452606093506060870191506020880160005b828110156150fe57815180516001600160a01b031685528581015160ff168686015287015163ffffffff168785015292850192908401906001016150bf565b50919998505050505050505050565b60006040820184835260206040602085015281855180845260608601915060208701935060005b818110156151595784516001600160a01b031683529383019391830191600101615134565b5090979650505050505050565b6000823561033e19833603018112614f8e57600080fd5b8035613db08161466f565b803561ffff81168114613db057600080fd5b600061026082840312156151ad57600080fd5b6151b5614579565b90506151c082615188565b81526151ce60208301615188565b60208201526151df60408301614d53565b60408201526151f06060830161433b565b60608201526152016080830161433b565b608082015261521260a0830161433b565b60a082015261522360c0830161433b565b60c082015261523460e0830161433b565b60e082015261010061524781840161433b565b9082015261012061525983820161433b565b9082015261014061526b83820161433b565b9082015261016061527d83820161433b565b9082015261018061528f83820161433b565b908201526101a06152a183820161433b565b908201526101c06152b383820161433b565b908201526101e06152c583820161433b565b908201526102006152d783820161433b565b908201526102206152e9838201613da5565b908201526102406152fb838201615188565b9082015292915050565b600082601f83011261531657600080fd5b81356020615326614a4b836149e0565b82815260059290921b8401810191818101908684111561534557600080fd5b8286015b848110156154995780356001600160401b038082111561536857600080fd5b908801906040828b03601f190181131561538157600080fd5b615389614535565b87840135815281840135838111156153a057600080fd5b8085019450508b603f8501126153b557600080fd5b8784013592506153c7614a4b846149e0565b83815260c09093028401820192888101908d8511156153e557600080fd5b948301945b848610156154845760c0868f03121561540257600080fd5b61540a61459c565b86356154158161432d565b8152868b013561542481614652565b818c01528685013561543581614d5e565b81860152606087013561544781613d4c565b6060820152608087013561545a81614633565b608082015260a087013561546d81613d4c565b60a0820152825260c09590950194908901906153ea565b828a0152508652505050918301918301615349565b509695505050505050565b600082601f8301126154b557600080fd5b813560206154c5614a4b836149e0565b82815260069290921b840181019181810190868411156154e457600080fd5b8286015b8481101561549957604081890312156155015760008081fd5b615509614535565b81356001600160e01b03811681146155215760008081fd5b81528185013561553081614652565b818601528352918301916040016154e8565b600082601f83011261555357600080fd5b81356020615563614a4b836149e0565b82815260059290921b8401810191818101908684111561558257600080fd5b8286015b848110156154995780356001600160401b03808211156155a65760008081fd5b908801906080828b03601f19018113156155c05760008081fd5b6155c86145be565b878401356155d581613d4c565b81526040848101356155e681613d4c565b828a0152606085810135858111156155fe5760008081fd5b61560c8f8c838a01016154a4565b848401525092850135928484111561562657600091508182fd5b6156348e8b868901016154a4565b90830152508652505050918301918301615586565b6000610340823603121561565c57600080fd5b6156646145e0565b61566d83614d73565b815261567b60208401614d53565b602082015261568c6040840161517d565b604082015261569d60608401614d53565b60608201526156ae60808401613da5565b60808201526156c03660a0850161519a565b60a08201526103008301356001600160401b03808211156156e057600080fd5b6156ec36838701615305565b60c084015261032085013591508082111561570657600080fd5b5061571336828601615542565b60e08301525092915050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b60006060808301868452602065ffffffffffff87168186015260406060604087015282875180855260808801915060808160051b89010194508389016000805b8381101561582f578a8803607f190185528251805189528701518789018790528051878a018190529088019083908b8b01905b8083101561581a5761580482855161571f565b60c0820191508a840193506001830192506157f1565b509950505093860193918601916001016157be565b50959c9b505050505050505050505050565b60008151808452602080850194506020840160005b8381101561588c57815180516001600160e01b0316885283015163ffffffff168388015260409096019590820190600101615856565b509495945050505050565b60006060808301868452602065ffffffffffff8716818601526040606060408701528287518085526080945060808801915060808160051b890101848a0160005b83811015614ef5578a8303607f19018552815180516001600160a01b039081168552888201511688850152868101518785018a90526159198a860182615841565b918b0151858303868d01529190506159318183615841565b9689019694505050908601906001016158d8565b634e487b7160e01b600052601260045260246000fd5b6000602080838503121561596e57600080fd5b82516001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80516159a3614a4b826149e0565b81815260c091820283018401918482019190888411156159c257600080fd5b938501935b83851015614a9c5780858a0312156159df5760008081fd5b6159e761459c565b85516159f28161432d565b815285870151615a0181614652565b81880152604086810151615a1481614d5e565b90820152606086810151615a2781613d4c565b90820152608086810151615a3a81614633565b9082015260a086810151615a4d81613d4c565b90820152835293840193918501916159c7565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a082810151610160830191615aad9084018261571f565b5092915050565b6001600160a01b03878116825266ffffffffffffff871660208301528581166040830152606082018590528316608082015260c060a08201819052600090615afe9083018461418d565b98975050505050505050565b6000610120615b19838861571f565b8560c08401528060e0840152615b318184018661418d565b91505060018060a01b03831661010083015295945050505050565b6101008101615b5b828661571f565b60c08201939093526001600160a01b039190911660e090910152919050565b60008085851115615b8a57600080fd5b83861115615b9757600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615bd15780818660140360031b1b83161692505b50509291505056fea26469706673582212208af42d00f7981f66c26abedd3927bf989169ec7af620c009abc435c2e790d54964736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c75000000000000000000000000348b92ce8584332df6272a348d4ddb14a5ec1dcc0000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c0000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab2500000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "5993587", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x5ADb234602D074064C216C1fDB23c6c2031F0C75", + "value": "0", + "txData": "0xa1ed317500000000000000000000000074fc0e2cb3eb5a2742f8b9f0d6f1263dd3664b5d0000000000000000000000000000000000000000000000000000000000000001", + "gas": "151998", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c7608060405234801561001057600080fd5b5060405161045038038061045083398101604081905261002f916100be565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161006e565b50506100ee565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100d057600080fd5b81516001600160a01b03811681146100e757600080fd5b9392505050565b610353806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806301ffc9a714610067578063715018a61461008f5780637258002c146100995780638da5cb5b146100ac578063ae74a1b5146100c7578063f2fde38b146100ea575b600080fd5b61007a610075366004610279565b6100fd565b60405190151581526020015b60405180910390f35b610097610134565b005b6100976100a73660046102c6565b610148565b6000546040516001600160a01b039091168152602001610086565b61007a6100d5366004610302565b60016020526000908152604090205460ff1681565b6100976100f8366004610302565b6101b9565b60006001600160e01b0319821663dc2ca19960e01b148061012e57506001600160e01b031982166301ffc9a760e01b145b92915050565b61013c6101fc565b6101466000610229565b565b6101506101fc565b6001600160a01b0382166000818152600160205260409020805460ff1916831515908117909155907fa2653e25a502c023a5830d0de847ef6f458387865b1f4f575d7594f9f2c0d71e336040516001600160a01b03909116815260200160405180910390a35050565b6101c16101fc565b6001600160a01b0381166101f057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6101f981610229565b50565b6000546001600160a01b031633146101465760405163118cdaa760e01b81523360048201526024016101e7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561028b57600080fd5b81356001600160e01b0319811681146102a357600080fd5b9392505050565b80356001600160a01b03811681146102c157600080fd5b919050565b600080604083850312156102d957600080fd5b6102e2836102aa565b9150602083013580151581146102f757600080fd5b809150509250929050565b60006020828403121561031457600080fd5b6102a3826102aa56fea26469706673582212205e82df17b15a5cae30a3f154a9ca8da33220e00d15a195f4bb7be81dbab3a80f64736f6c63430008170033000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b1", + "gas": "397881", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c760e06040523480156200001157600080fd5b5060405162003ced38038062003ced83398101604081905262000034916200006b565b6001600160a01b0392831660805290821660a0521660c052620000bf565b6001600160a01b03811681146200006857600080fd5b50565b6000806000606084860312156200008157600080fd5b83516200008e8162000052565b6020850151909350620000a18162000052565b6040850151909250620000b48162000052565b809150509250925092565b60805160a05160c051613b726200017b600039600081816102fe015281816103690152818161045d015281816109fc01528181611235015281816113e40152818161185d01528181611dca0152611e790152600081816101300152818161050901528181611c4101528181612475015261278f01526000818161023a0152818161082a01528181610b4e01528181610c56015281816112dd0152818161167001528181611f120152818161204201526124d70152613b726000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639e0a5d5911610097578063c59dfadb11610066578063c59dfadb146102d7578063d4a1b4b1146102f9578063d60d1a0914610320578063f463665f1461033357600080fd5b80639e0a5d591461025c578063ab5f3a011461026f578063b7cc53b314610282578063c0920f38146102c457600080fd5b8063467f4cb9116100d3578063467f4cb9146101ae57806351fc1735146101de578063568ecef1146101f357806388bc2ef31461023557600080fd5b806319781e23146101055780631eabcd341461012b57806330795ef81461016a5780633277b1a11461018b575b600080fd5b6101186101133660046128d9565b610346565b6040519081526020015b60405180910390f35b6101527f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610122565b61017d610178366004612921565b61043c565b604051610122929190612a0f565b61019e610199366004612b51565b6109ed565b6040516101229493929190612c85565b6101186101bc366004612d38565b6000602081815293815260408082208552928152828120909352825290205481565b6101f16101ec366004612d7a565b61118f565b005b610118610201366004612db2565b6002602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861026a366004612e04565b6111fa565b61011861027d366004612e36565b6112d5565b610118610290366004612db2565b6001602090815260009586526040808720825294865284862081529285528385208352908452828420909152825290205481565b61017d6102d2366004612921565b6113c3565b6102ea6102e5366004612e62565b611831565b60405161012293929190612f1f565b6101527f000000000000000000000000000000000000000000000000000000000000000081565b61011861032e366004612fc9565b611d5d565b610118610341366004613036565b611e56565b6040516321d1336160e11b81526004810183905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156103b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103d59190613152565b61010081015190915060481c60019081161461040457604051632ac449f360e01b815260040160405180910390fd5b5050336000908152602081815260408083209483529381528382206001600160a01b0393909316825291909152908120805491905590565b610444612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa1580156104ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d19190613152565b91506104e36060860160408701613203565b63ffffffff1683146105c5576105c0846104ff6012600a61331c565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016633be273fa8a8861054060608d0160408e01613203565b6040516001600160e01b031960e086901b1681526004810193909352602483019190915263ffffffff166044820152601260648201526084015b602060405180830381865afa158015610597573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105bb9190613328565b612160565b6105c7565b835b60408051600180825281830190925291925060009190816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816105e257905050905061062036879003870187613352565b81600081518110610633576106336133a4565b60200260200101819052506000610678338984878b602001602081019061065a91906133ba565b60ff1661066d60608e0160408f01613203565b63ffffffff16612234565b9050808311156106aa57604051634fd2cdcd60e11b815260048101849052602481018290526044015b60405180910390fd5b336000908152602081815260408083208b845282528220859290916106d1908b018b6133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020546106fc91906133f2565b336000908152602081815260408083208c8452825282209190610721908b018b6133d5565b6001600160a01b031681526020808201929092526040908101600090812093909355338352600282528083208b84528252822088918390610764908c018c6133d5565b6001600160a01b03168152602080820192909252604090810160009081208984015165ffffffffffff16825283528181208a82529092529020546107a89190613405565b3360009081526002602090815260408083208d845282528220929350839291906107d4908c018c6133d5565b6001600160a01b039081168252602080830193909352604091820160009081208a85015165ffffffffffff16825284528281208b82529093528183209390935551632eec7b5560e11b8152600481018c905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610871573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108959190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108f69190613418565b6001600160a01b03166329ed16cd8b8860200151338d600001602081019061091e91906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b039081166044840152166064820152608481018a905260a401602060405180830381865afa158015610986573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109aa9190613328565b9050808211806109b8575080155b156109e057604051631913147f60e01b815260048101839052602481018290526044016106a1565b5050505094509492505050565b6109f5612875565b60008060607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166343a266c28b6040518263ffffffff1660e01b8152600401610a4891815260200190565b61012060405180830381865afa158015610a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8a9190613152565b610100810151909450600090604f1c600190811614610b2a57610b25338c8a8a808060200260200160405190810160405280939291908181526020016000905b82821015610af657610ae760608302860136819003810190613352565b81526020019060010190610aca565b5050505050888d6020016020810190610b0f91906133ba565b60ff168e604001602081019061066d9190613203565b610c32565b60405163d175415360e01b8152600481018c9052610c32908c906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bbd9190810190613458565b6040805160008082526020820190925290610c00565b6040805160608101825260008082526020808301829052928201528252600019909201910181610bd35790505b50610c1160408e0160208f016133ba565b60ff168d6040016020810190610c279190613203565b63ffffffff16612296565b604051632eec7b5560e11b8152600481018d90529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa158015610c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc19190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b8152600401610cee91815260200190565b602060405180830381865afa158015610d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2f9190613328565b9050808b1115610d5c576040516376fd574b60e11b8152600481018c9052602481018290526044016106a1565b61010086015160511c6001908116148015610d8f57506000610d8387610100015160521c90565b6001600160a01b031614155b15610f26576000604051806101400160405280336001600160a01b031681526020018f6001600160a01b031681526020018e66ffffffffffffff168152602001886020015165ffffffffffff1681526020018d815260200183815260200160405180608001604052808e6000016020810190610e0b91906133d5565b6001600160a01b031681526020018e6020016020810190610e2c91906133ba565b60ff1681526020018e6040016020810190610e479190613203565b63ffffffff168152602001868152508152602001610e728961010001516001604f9190911c81161490565b15158152602001610e8889610100015160141c90565b61ffff1681526020018990529050610ea587610100015160521c90565b6001600160a01b031663fb82b1b0826040518263ffffffff1660e01b8152600401610ed091906134f1565b600060405180830381865afa158015610eed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f15919081019061360c565b919e5091965094509150610f369050565b61010086015160141c61ffff1693505b8115610f4b57610f48828c8387612350565b94505b8251859015610fa457835160005b81811015610fa1576000868281518110610f7557610f756133a4565b602002602001015160200151905080600014610f9857610f958185613405565b93505b50600101610f59565b50505b600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008e815260200190815260200160002060008c6000016020810190610fee91906133d5565b6001600160a01b03166001600160a01b03168152602001908152602001600020548111156110a65780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061106191906133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054604051634fd2cdcd60e11b81526004016106a1929190918252602082015260400190565b801561117e5780600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d60000160208101906110f791906133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205403600080336001600160a01b03166001600160a01b0316815260200190815260200160002060008f815260200190815260200160002060008d600001602081019061116391906133d5565b6001600160a01b031681526020810191909152604001600020555b505050975097509750979350505050565b3360009081526020818152604080832086845282528083206001600160a01b03861684529091529020546111c4908290613405565b336000908152602081815260408083209683529581528582206001600160a01b0395909516825293909352929091209190915550565b60008160000361120c575060006112cd565b8284111561121c575060006112cd565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a99190613152565b90506112c98386866112c085610100015160141c90565b61ffff16612350565b9150505b949350505050565b60006113b9847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d1754153876040518263ffffffff1660e01b815260040161132991815260200190565b600060405180830381865afa158015611346573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261136e9190810190613458565b60408051600080825260208201909252906113b1565b60408051606081018252600080825260208083018290529282015282526000199092019101816113845790505b508686612296565b90505b9392505050565b6113cb612875565b6040516321d1336160e11b8152600481018690526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015611434573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114589190613152565b915061146a6060860160408701613203565b63ffffffff16831461148b57611486846104ff6012600a61331c565b61148d565b835b336000908152602081815260408083208a8452825282209293506114b3908801886133d5565b6001600160a01b03166001600160a01b031681526020019081526020016000205481111561150257336000908152602081815260408083208984528252822083929091611061908901896133d5565b336000908152602081815260408083208984528252822083929091611529908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120543382528184528282208b8352845291812093909103929161156b908901896133d5565b6001600160a01b0316815260208082019290925260409081016000908120939093553383526001825280832089845282528220869183906115ae908a018a6133d5565b6001600160a01b0316815260208082019290925260409081016000908120875165ffffffffffff16825283528181208882529092529020546115f09190613405565b3360009081526001602090815260408083208b8452825282209293508392919061161c908a018a6133d5565b6001600160a01b03908116825260208083019390935260409182016000908120885165ffffffffffff16825284528281208982529093528183209390935551632eec7b5560e11b8152600481018a905290917f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa1580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa158015611718573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173c9190613418565b6001600160a01b0316638ca53ccd898660200151338b600001602081019061176491906133d5565b6040516001600160e01b031960e087901b168152600481019490945265ffffffffffff90921660248401526001600160a01b0390811660448401521660648201526084810188905260a401602060405180830381865afa1580156117cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f09190613328565b9050808211806117fe575080155b15611826576040516306dfadfd60e21b815260048101839052602481018290526044016106a1565b505094509492505050565b611839612875565b6040516321d1336160e11b8152600481018690526000906060906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa1580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c99190613152565b805190935065ffffffffffff166000036118f65760405163ab28886760e01b815260040160405180910390fd5b61010083015160441c600190811603611922576040516316900c7560e21b815260040160405180910390fd5b61010083015160009060501c60019081161480156119585750600061194c85610100015160521c90565b6001600160a01b031614155b15611ab25760408051610120810182523381526001600160a01b038c166020820152600091810161198e368d90038d018d61372c565b81526020018a66ffffffffffffff168152602001866020015165ffffffffffff168152602001896001600160a01b031681526020018660a001516001600160701b031681526020016119e587610100015160041c90565b61ffff16815260200188888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152509050611a3785610100015160521c90565b6001600160a01b0316638cc35846826040518263ffffffff1660e01b8152600401611a6291906137a7565b600060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611aa79190810190613885565b93509150611ac29050565b5060a08301516001600160701b03165b815160608a0135908015611b485760005b81811015611b46576000858281518110611aef57611aef6133a4565b602002602001015160200151905080600014611b3d5783811115611b30576040516301a3406160e01b815260048101829052602481018590526044016106a1565b611b3a81856133f2565b93505b50600101611ad3565b505b508960600135600003611b61575060009250611d519050565b8015611bf957336000908152602081815260408083208c84528252822083929091611b8e908e018e6133d5565b6001600160a01b03166001600160a01b0316815260200190815260200160002054611bb99190613405565b336000908152602081815260408083208d8452825282209190611bde908e018e6133d5565b6001600160a01b031681526020810191909152604001600020555b81600003611c0d575060009250611d519050565b6000611c1e86610100015160241c90565b63ffffffff16611c3460608d0160408e01613203565b63ffffffff1614611d1f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633be273fa8b8d6040016020810190611c829190613203565b6101008a015160241c8f6020016020810190611c9e91906133ba565b6040516001600160e01b031960e087901b168152600481019490945263ffffffff92831660248501529116604483015260ff166064820152608401602060405180830381865afa158015611cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1a9190613328565b611d3a565b611d2f60408c0160208d016133ba565b611d3a90600a613992565b9050611d4b8b606001358483612160565b94505050505b96509650969350505050565b6000611e4987878787808060200260200160405190810160405280939291908181526020016000905b82821015611db257611da360608302860136819003810190613352565b81526020019060010190611d86565b50506040516321d1336160e11b8152600481018e90527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693506343a266c29250602401905061012060405180830381865afa158015611e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e429190613152565b8787612234565b90505b9695505050505050565b6040516321d1336160e11b81526004810189905260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906343a266c29060240161012060405180830381865afa158015611ec1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee59190613152565b905060006120148b898303611f865760405163d175415360e01b8152600481018e90526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d175415390602401600060405180830381865afa158015611f59573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f819190810190613458565b611fba565b8a8a808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505050505b8989808060200260200160405190810160405280939291908181526020016000905b8282101561200857611ff960608302860136819003810190613352565b81526020019060010190611fdc565b50505050508888612296565b90508060000361202957600092505050612154565b604051632eec7b5560e11b8152600481018c90526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa90602401602060405180830381865afa158015612091573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b59190613418565b6001600160a01b0316634da781a98d6040518263ffffffff1660e01b81526004016120e291815260200190565b602060405180830381865afa1580156120ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121239190613328565b9050808b11156121395760009350505050612154565b61214e828c836112c087610100015160141c90565b93505050505b98975050505050505050565b600080806000198587098587029250828110838203039150508060000361219a57838281612190576121906139a1565b04925050506113bc565b8381106121cb57604051630c740aef60e31b81526004810187905260248101869052604481018590526064016106a1565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b8351600090815b8181101561228a57600061226c8a8a8a858151811061225c5761225c6133a4565b60200260200101518a8a8a6123bd565b905080156122815761227e8185613405565b93505b5060010161223b565b50509695505050505050565b8351600090815b81811015612345578681815181106122b7576122b76133a4565b60200260200101516001600160a01b031663edb40950898888886040518563ffffffff1660e01b81526004016122f094939291906139b7565b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123319190613328565b61233b9084613405565b925060010161229d565b505095945050505050565b600061270f198201612364575060006112cd565b8284106123725750836112cd565b600061237f868686612160565b9050826000036123905790506112cd565b6112c98161239f858888612160565b6123ab866127106133f2565b6123b59190613405565b612710612160565b6001600160a01b03808716600090815260208181526040808320898452825280832088519094168352928152919020549085015160ff1683146124115761240c81866020015160ff1685612818565b612413565b805b905080158061242b575081856040015163ffffffff16145b6124b1576124ac8161243f6012600a61331c565b6040888101519051631df139fd60e11b8152600481018b905263ffffffff909116602482015260448101869052601260648201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633be273fa9060840161057a565b6124b3565b805b604051632eec7b5560e11b8152600481018890529091506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635dd8f6aa90602401602060405180830381865afa15801561251e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125429190613418565b6001600160a01b031663ffa082446040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a39190613418565b60208601518751604051634c8cafef60e11b8152600481018b905265ffffffffffff90921660248301526001600160a01b038b81166044840152908116606483015291909116906399195fde90608401600060405180830381865afa158015612610573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526126389190810190613a39565b805190915060005b8181101561280b57600083828151811061265c5761265c6133a4565b6020908102919091018101516001600160a01b03808e1660009081526001845260408082208f835285528082208e5190931682529184528181208c5165ffffffffffff16825284528181208385015163ffffffff1682529093529091205481519192506126d1916001600160e01b03166133f2565b6001600160e01b03168152602089015160ff16871461270e5761270981600001516001600160e01b03168a6020015160ff1689612818565b612711565b80515b6001600160e01b03168082521580612732575085816020015163ffffffff16145b6127c35780516127be906001600160e01b03166127516012600a61331c565b6020840151604051631df139fd60e11b8152600481018f905263ffffffff9091166024820152604481018a9052601260648201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633be273fa9060840161057a565b6127c6565b80515b6001600160e01b03168082528511156127f55780516127ee906001600160e01b0316866133f2565b9450612802565b6000945050505050611e4c565b50600101612640565b5050509695505050505050565b60008282036128285750826113bc565b828211156128565761283a83836133f2565b61284590600a61331c565b61284f9085613b03565b90506113bc565b61286082846133f2565b61286b90600a61331c565b61284f9085613b1a565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b6001600160a01b03811681146128d657600080fd5b50565b600080604083850312156128ec57600080fd5b8235915060208301356128fe816128c1565b809150509250929050565b60006060828403121561291b57600080fd5b50919050565b60008060008060c0858703121561293757600080fd5b843593506129488660208701612909565b939693955050505060808201359160a0013590565b65ffffffffffff80825116835280602083015116602084015280604083015116604084015250606081015161299c606084018265ffffffffffff169052565b5060808101516129b4608084018263ffffffff169052565b5060a08101516129cf60a08401826001600160701b03169052565b5060c08101516129e760c084018263ffffffff169052565b5060e0810151612a0260e08401826001600160a01b03169052565b5061010090810151910152565b6101408101612a1e828561295d565b826101208301529392505050565b60008083601f840112612a3e57600080fd5b5081356001600160401b03811115612a5557600080fd5b602083019150836020606083028501011115612a7057600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612ab057612ab0612a77565b60405290565b604051606081016001600160401b0381118282101715612ab057612ab0612a77565b604080519081016001600160401b0381118282101715612ab057612ab0612a77565b604051601f8201601f191681016001600160401b0381118282101715612b2257612b22612a77565b604052919050565b60006001600160401b03821115612b4357612b43612a77565b50601f01601f191660200190565b6000806000806000806000610100888a031215612b6d57600080fd5b8735612b78816128c1565b96506020880135955060408801359450612b958960608a01612909565b935060c08801356001600160401b0380821115612bb157600080fd5b612bbd8b838c01612a2c565b909550935060e08a0135915080821115612bd657600080fd5b508801601f81018a13612be857600080fd5b8035612bfb612bf682612b2a565b612afa565b8181528b6020838501011115612c1057600080fd5b8160208401602083013760006020838301015280935050505092959891949750929550565b60005b83811015612c50578181015183820152602001612c38565b50506000910152565b60008151808452612c71816020860160208601612c35565b601f01601f19169290920160200192915050565b6000610180808301612c97848961295d565b86610120850152856101408501528161016085015280915084518082526101a091508185019250818160051b8601019150602080870160005b83811015612d285787850361019f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612d1481880183612c59565b978501979650505090820190600101612cd0565b50929a9950505050505050505050565b600080600060608486031215612d4d57600080fd5b8335612d58816128c1565b9250602084013591506040840135612d6f816128c1565b809150509250925092565b600080600060608486031215612d8f57600080fd5b833592506020840135612da1816128c1565b929592945050506040919091013590565b600080600080600060a08688031215612dca57600080fd5b8535612dd5816128c1565b9450602086013593506040860135612dec816128c1565b94979396509394606081013594506080013592915050565b60008060008060808587031215612e1a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080600060608486031215612e4b57600080fd5b505081359360208301359350604090920135919050565b600080600080600080868803610100811215612e7d57600080fd5b8735612e88816128c1565b96506080601f1982011215612e9c57600080fd5b5060208701945060a0870135935060c0870135612eb8816128c1565b925060e08701356001600160401b0380821115612ed457600080fd5b818901915089601f830112612ee857600080fd5b813581811115612ef757600080fd5b8a6020828501011115612f0957600080fd5b6020830194508093505050509295509295509295565b6000610160808301612f31848861295d565b610120840186905261014084019190915283519081905261018080840191600581901b850190910190602080870160005b83811015612fba5787850361017f19018652815180516001600160a01b031686528381015184870152604090810151606091870182905290612fa681880183612c59565b978501979650505090820190600101612f62565b50929998505050505050505050565b60008060008060008060a08789031215612fe257600080fd5b8635612fed816128c1565b95506020870135945060408701356001600160401b0381111561300f57600080fd5b61301b89828a01612a2c565b979a9699509760608101359660809091013595509350505050565b60008060008060008060008060c0898b03121561305257600080fd5b883597506020890135965060408901356001600160401b038082111561307757600080fd5b818b0191508b601f83011261308b57600080fd5b81358181111561309a57600080fd5b8c60208260051b85010111156130af57600080fd5b6020830198508097505060608b01359150808211156130cd57600080fd5b506130da8b828c01612a2c565b999c989b5096999598969760808701359660a0013595509350505050565b805165ffffffffffff8116811461310e57600080fd5b919050565b63ffffffff811681146128d657600080fd5b805161310e81613113565b80516001600160701b038116811461310e57600080fd5b805161310e816128c1565b6000610120828403121561316557600080fd5b61316d612a8d565b613176836130f8565b8152613184602084016130f8565b6020820152613195604084016130f8565b60408201526131a6606084016130f8565b60608201526131b760808401613125565b60808201526131c860a08401613130565b60a08201526131d960c08401613125565b60c08201526131ea60e08401613147565b60e0820152610100928301519281019290925250919050565b60006020828403121561321557600080fd5b81356113bc81613113565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561327157816000190482111561325757613257613220565b8085161561326457918102915b93841c939080029061323b565b509250929050565b60008261328857506001613316565b8161329557506000613316565b81600181146132ab57600281146132b5576132d1565b6001915050613316565b60ff8411156132c6576132c6613220565b50506001821b613316565b5060208310610133831016604e8410600b84101617156132f4575081810a613316565b6132fe8383613236565b806000190482111561331257613312613220565b0290505b92915050565b60006113bc8383613279565b60006020828403121561333a57600080fd5b5051919050565b803560ff8116811461310e57600080fd5b60006060828403121561336457600080fd5b61336c612ab6565b8235613377816128c1565b815261338560208401613341565b6020820152604083013561339881613113565b60408201529392505050565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156133cc57600080fd5b6113bc82613341565b6000602082840312156133e757600080fd5b81356113bc816128c1565b8181038181111561331657613316613220565b8082018082111561331657613316613220565b60006020828403121561342a57600080fd5b81516113bc816128c1565b60006001600160401b0382111561344e5761344e612a77565b5060051b60200190565b6000602080838503121561346b57600080fd5b82516001600160401b0381111561348157600080fd5b8301601f8101851361349257600080fd5b80516134a0612bf682613435565b81815260059190911b820183019083810190878311156134bf57600080fd5b928401925b828410156134e65783516134d7816128c1565b825292840192908401906134c4565b979650505050505050565b6020815261350b6020820183516001600160a01b03169052565b6000602083015161352760408401826001600160a01b03169052565b506040830151606083015260608301516080830152608083015160a083015260a083015160c083015260c083015161359260e084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b5060e083015115156101608301526101008301516101808301526101208301516101a0808401526112cd6101c0840182612c59565b600082601f8301126135d857600080fd5b81516135e6612bf682612b2a565b8181528460208386010111156135fb57600080fd5b6112cd826020830160208701612c35565b6000806000806080858703121561362257600080fd5b84519350602085015192506040850151915060608501516001600160401b038082111561364e57600080fd5b818701915087601f83011261366257600080fd5b8151613670612bf682613435565b8082825260208201915060208360051b86010192508a83111561369257600080fd5b602085015b8381101561371c578051858111156136ae57600080fd5b86016060818e03601f190112156136c457600080fd5b6136cc612ab6565b60208201516136da816128c1565b8152604082015160208201526060820151878111156136f857600080fd5b6137078f6020838601016135c7565b60408301525084525060209283019201613697565b50979a9699509497505050505050565b60006080828403121561373e57600080fd5b604051608081018181106001600160401b038211171561376057613760612a77565b604052823561376e816128c1565b815261377c60208401613341565b6020820152604083013561378f81613113565b60408201526060928301359281019290925250919050565b602081526137c16020820183516001600160a01b03169052565b600060208301516137dd60408401826001600160a01b03169052565b506040830151613820606084018280516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b50606083015160e08301526080830151610100818185015260a085015191506138556101208501836001600160a01b03169052565b60c085015161014085015260e08501516101608501528401516101808085015290506112cd6101a0840182612c59565b6000806040838503121561389857600080fd5b825191506020808401516001600160401b03808211156138b757600080fd5b818601915086601f8301126138cb57600080fd5b81516138d9612bf682613435565b81815260059190911b830184019084810190898311156138f857600080fd5b8585015b83811015613981578051858111156139145760008081fd5b86016060818d03601f190181131561392c5760008081fd5b613934612ab6565b89830151613941816128c1565b815260408301518a82015290820151908782111561395f5760008081fd5b61396d8e8b848601016135c7565b6040820152855250509186019186016138fc565b508096505050505050509250929050565b60006113bc60ff841683613279565b634e487b7160e01b600052601260045260246000fd5b60006080820186835260206080602085015281875180845260a08601915060208901935060005b81811015613a2257845180516001600160a01b031684528481015160ff168585015260409081015163ffffffff1690840152938301936060909201916001016139de565b505060408501969096525050506060015292915050565b60006020808385031215613a4c57600080fd5b82516001600160401b03811115613a6257600080fd5b8301601f81018513613a7357600080fd5b8051613a81612bf682613435565b81815260069190911b82018301908381019087831115613aa057600080fd5b928401925b828410156134e65760408489031215613abe5760008081fd5b613ac6612ad8565b84516001600160e01b0381168114613ade5760008081fd5b815284860151613aed81613113565b8187015282526040939093019290840190613aa5565b808202811582820484141761331657613316613220565b600082613b3757634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220078b4d704f3a843d885930dc6b844212e803849a4c44e6b229931a0876bea4db64736f6c634300081700330000000000000000000000005adb234602d074064c216c1fdb23c6c2031f0c750000000000000000000000008c88469ca3aa9de6ab22c5113ae2a8e20329fd8c000000000000000000000000c052725ff9888ce3148aa8bfb5063f1a5028946d", + "gas": "3875767", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x4e59b44847b379578588920cA78FbF26c0B4956C", + "value": "0", + "txData": "0xdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c76101c06040523480156200001257600080fd5b50604051620061453803806200614583398101604081905262000035916200017c565b6001600160a01b0380881660805280821660a052604080516388bc2ef360e01b81529051918616916388bc2ef3916004808201926020929091908290030181865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af91906200023d565b6001600160a01b0390811660c05288811660e052868116610120526040805163d4a1b4b160e01b815290519186169163d4a1b4b1916004808201926020929091908290030181865afa1580156200010a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013091906200023d565b6001600160a01b039081166101405294851661016052509183166101805282166101a05216610100525062000264915050565b6001600160a01b03811681146200017957600080fd5b50565b600080600080600080600080610100898b0312156200019a57600080fd5b8851620001a78162000163565b60208a0151909850620001ba8162000163565b60408a0151909750620001cd8162000163565b60608a0151909650620001e08162000163565b60808a0151909550620001f38162000163565b60a08a0151909450620002068162000163565b60c08a0151909350620002198162000163565b60e08a01519092506200022c8162000163565b809150509295985092959890939650565b6000602082840312156200025057600080fd5b81516200025d8162000163565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615dd96200036c6000396000818161025e01528181611af20152611c130152600081816103e6015281816118140152818161197601528181611eec0152818161270f01528181612bb40152818161311a0152613e390152600081816102aa0152613ecb0152600081816105eb0152610a8401526000818161030001526121690152600081816104e80152818161267e0152612a120152600081816104b4015261226e01526000818161056f015281816121f6015261236001526000818161045201528181610539015261366a01526000818161067f0152611d3d0152615dd96000f3fe6080604052600436106101b75760003560e01c80636afdd850116100ec578063d4a1b4b11161008a578063edb4095011610064578063edb409501461064d578063f434c9141461066d578063fdebc62a146106a1578063fef43257146106c157600080fd5b8063d4a1b4b1146105d9578063ddb4389e1461060d578063e28b54111461062d57600080fd5b806388bc2ef3116100c657806388bc2ef31461055d5780639e6eec0514610591578063c57981b5146105a4578063cfaf5839146105b957600080fd5b80636afdd850146104d6578063748e821c1461050a5780637da0a8771461052a57600080fd5b80633a01714f11610159578063515a929311610133578063515a929314610408578063572b6c05146104355780635f912e5614610482578063659a2047146104a257600080fd5b80633a01714f146103225780634ff513ab146103b4578063507f1465146103d457600080fd5b80631d831d5c116101955780631d831d5c1461024c5780631f47ce6914610298578063253721c8146102cc578063293c4999146102ee57600080fd5b806301ffc9a7146101bc57806304a83d7f146101f157806313da83171461021e575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046144f7565b6106d4565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004614539565b6107c8565b6040516101e89190614571565b34801561022a57600080fd5b5061023e61023936600461461c565b6109a3565b6040519081526020016101e8565b34801561025857600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e8565b3480156102a457600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d857600080fd5b506102ec6102e73660046146b3565b610a33565b005b3480156102fa57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561032e57600080fd5b506103a761033d366004614731565b6040805160608082018352600080835260208084018290529284018190529485528482528285206001600160a01b03948516865282529382902082519485018352549283168452600160a01b830460ff1690840152600160a81b90910463ffffffff169082015290565b6040516101e8919061478c565b3480156103c057600080fd5b5061023e6103cf36600461479a565b610efb565b3480156103e057600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561041457600080fd5b50610428610423366004614802565b611325565b6040516101e89190614861565b34801561044157600080fd5b506101dc610450366004614874565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0390811691161490565b34801561048e57600080fd5b506102ec61049d366004614891565b6113bf565b3480156104ae57600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156104e257600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561051657600080fd5b5061023e6105253660046148e2565b61142f565b34801561053657600080fd5b507f0000000000000000000000000000000000000000000000000000000000000000610280565b34801561056957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b6102ec61059f366004614994565b6114c4565b3480156105b057600080fd5b5061023e601981565b3480156105c557600080fd5b5061023e6105d4366004614a27565b611551565b3480156105e557600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b34801561061957600080fd5b506102ec610628366004614539565b61158c565b34801561063957600080fd5b5061023e610648366004614a6f565b61173d565b34801561065957600080fd5b5061023e610668366004614c1f565b611972565b34801561067957600080fd5b506102807f000000000000000000000000000000000000000000000000000000000000000081565b3480156106ad57600080fd5b506102ec6106bc366004614cde565b611aaa565b61023e6106cf366004614d0e565b611ac7565b60006001600160e01b0319821663279a148b60e01b148061070557506001600160e01b03198216633d0d324560e21b145b8061072057506001600160e01b031982166321c9410760e01b145b8061073b57506001600160e01b031982166313da831760e01b145b8061075657506001600160e01b0319821663bb21da2560e01b145b8061077157506001600160e01b031982166306afdd8560e41b145b8061078c57506001600160e01b0319821663279a148b60e01b145b806107a757506001600160e01b031982166379ffa41360e01b145b806107c257506001600160e01b031982166301ffc9a760e01b145b92915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120546060919080821061085857604080516000808252602082019092529061084e565b60408051606081018252600080825260208083018290529282015282526000199092019101816108215790505b509250505061099c565b806108638584614dc0565b1115610876576108738282614dd3565b93505b836001600160401b0381111561088e5761088e614ab1565b6040519080825280602002602001820160405280156108d957816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816108ac5790505b50925060005b848110156109985760008781526002602090815260408083206001600160a01b038a16845290915290206109138285614dc0565b8154811061092357610923614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810191909152845185908390811061098557610985614de6565b60209081029190910101526001016108df565b5050505b9392505050565b60006109b189896003611cd1565b6109f5898989898888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611def92505050565b905084811015610a27576040516353004fd560e01b815260048101829052602481018690526044015b60405180910390fd5b98975050505050505050565b610a6b610a3f84612150565b846013610a4b826121dd565b6001600160a01b0316610a5c61222d565b6001600160a01b03161461223c565b6040516321d1336160e11b8152600481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906343a266c29060240161012060405180830381865afa158015610ad4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af89190614efe565b9050806020015165ffffffffffff16600014158015610b235750610100810151604b1c600190811614155b15610b41576040516308034a2d60e21b815260040160405180910390fd5b60005b82811015610ef4576000848483818110610b6057610b60614de6565b905060600201803603810190610b769190614f1b565b60008781526020818152604080832084516001600160a01b03908116855292529091208054929350911615610bcc5780546040516307295c0160e21b81526001600160a01b039091166004820152602401610a1e565b81516000906001600160a01b031661eeee148015610bf25750826020015160ff16601214155b15610bff57506001610d09565b82516001600160a01b031661eeee14610d095782516040516301ffc9a760e01b815263a219a02560e01b60048201526001600160a01b03909116906301ffc9a790602401602060405180830381865afa925050508015610c7c575060408051601f3d908101601f19168201909252610c7991810190614f37565b60015b15610d0957808015610cfd575083600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190614f54565b60ff16846020015160ff1614155b15610d0757600191505b505b8015610d285760405163104a127760e21b815260040160405180910390fd5b826040015163ffffffff16600003610d5357604051633c94d15b60e01b815260040160405180910390fd5b82600001518260000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555082602001518260000160146101000a81548160ff021916908360ff16021790555082604001518260000160156101000a81548163ffffffff021916908363ffffffff1602179055506001600089815260200190815260200160002082908060018154018082558091505060019003906000526020600020016000909190919091506000820160009054906101000a90046001600160a01b03168160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506000820160149054906101000a900460ff168160000160146101000a81548160ff021916908360ff1602179055506000820160159054906101000a900463ffffffff168160000160156101000a81548163ffffffff021916908363ffffffff1602179055505050877fec91efc21eddd12fa66398fea3251c0e0b95bc53f0cdde2cd2c52e94bf11e07883610ed361222d565b604051610ee1929190614f71565b60405180910390a2505050600101610b44565b5050505050565b6000333014610f0957600080fd5b50816000610f1d60c0880160a08901614874565b6001600160a01b03161461111357610f3b60c0870160a08801614874565b6040516301ffc9a760e01b815262dcdc5760e41b60048201526001600160a01b0391909116906301ffc9a790602401602060405180830381865afa158015610f87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fab9190614f37565b610fe457610fbf60c0870160a08801614874565b6040516347dfdccf60e11b81526001600160a01b039091166004820152602401610a1e565b610ffc610ff760c0880160a08901614874565b61224c565b6110185761100b8360196122db565b6110159082614dd3565b90505b6040805160c0810182526001600160a01b0386168082526020808301859052600089815280825284812083825290915283812054600160a01b900460ff169383019390935260608201889052608082015260a0810161107c368a90038a018a614fd2565b90529050600061109c61109560c08a0160a08b01614874565b87856122fd565b90506110ae60c0890160a08a01614874565b6001600160a01b0316630dcdc57082846040518363ffffffff1660e01b81526004016110da91906150be565b6000604051808303818588803b1580156110f357600080fd5b505af1158015611107573d6000803e3d6000fd5b5050505050505061131c565b6111236060870160408801615112565b66ffffffffffffff16156112b05760006111556111466060890160408a01615112565b66ffffffffffffff1686612337565b90506001600160a01b0381166111a9576111756060880160408901615112565b60405163ea4f4b6160e01b815266ffffffffffffff90911660048201526001600160a01b0386166024820152604401610a1e565b6001600160a01b03811630148015906111c857506111c68161224c565b155b156111e5576111d88460196122db565b6111e29083614dd3565b91505b6000866040516020016111fa91815260200190565b60408051601f198184030181529190529050611219602089018961512f565b15611248576112438261123260608b0160408c01615112565b66ffffffffffffff168886856123cd565b6112a9565b60008061125b60808b0160608c01614874565b6001600160a01b03160361126f578461127f565b61127f60808a0160608b01614874565b90506112a78361129560608c0160408d01615112565b66ffffffffffffff168987858761247f565b505b505061131c565b6000806112c36080890160608a01614874565b6001600160a01b0316036112d757826112e7565b6112e76080880160608901614874565b90506112f28161224c565b61130e576113018460196122db565b61130b9083614dd3565b91505b61131a3082878561253c565b505b95945050505050565b606060016000838152602001908152602001600020805480602002602001604051908101604052809291908181526020016000905b828210156113b457600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff169082015282526001909201910161135a565b505050509050919050565b3330146113cb57600080fd5b6001600160a01b0381166113f257604051630692dd3560e01b815260040160405180910390fd5b60008560405160200161140791815260200190565b60405160208183030381529060405290506114278260018787878661247f565b505050505050565b600061144561143d8b612150565b8b6010611cd1565b61148a8a8a8a8a898989898080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506126d692505050565b9050858110156114b7576040516332eb01cf60e21b81526004810182905260248101879052604401610a1e565b9998505050505050505050565b61154788886114d68b8b8b888861285e565b8888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8c018190048102820181019092528a815292508a9150899081908401838280828437600092019190915250612afb92505050565b5050505050505050565b600061155f86868686612b7a565b90508181101561131c576040516332eb01cf60e21b81526004810182905260248101839052604401610a1e565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252909120548082106115d2575050505050565b60006115df600186612337565b9050816115ec8585614dc0565b11156115ff576115fc8383614dd3565b93505b60005b848110156117035760008781526002602090815260408083206001600160a01b038a16845290915281206116368387614dc0565b8154811061164657611646614de6565b60009182526020918290206040805160608101825260029390930290910180548352600101546001600160a01b03811693830193909352600160a01b90920465ffffffffffff1691810182905291504210156116d9578115611547576116ac8286614dc0565b60008981526003602090815260408083206001600160a01b038c1684529091529020555050505050505050565b6116fa88886116ed846000015160196122db565b8460200151876001612e8e565b50600101611602565b5061170e8484614dc0565b60009687526003602090815260408089206001600160a01b039098168952969052949095209390935550505050565b600061175361174b85612150565b856005611cd1565b604051633a01714f60e01b8152600481018590526001600160a01b038481166024830152831690633a01714f90604401606060405180830381865afa1580156117a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c4919061514c565b6040015163ffffffff166000036117ee5760405163aaf52f1f60e01b815260040160405180910390fd5b6040516319781e2360e01b8152600481018590526001600160a01b0384811660248301527f000000000000000000000000000000000000000000000000000000000000000016906319781e23906044016020604051808303816000875af115801561185d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188191906151a0565b9050816001600160a01b0316836001600160a01b0316857ff0aa72bb9c2a07cf43281bfe8c525ba320fdc71e18b54c9f93ab22ce074af7f6846118c261222d565b604080519283526001600160a01b0390911660208301520160405180910390a4801561099c5760006118f58385846122fd565b6040805160208101825260008082529151639e6eec0560e01b81529293506001600160a01b03861692639e6eec05928592611938928b928b928a92600401615209565b6000604051808303818588803b15801561195157600080fd5b505af1158015611965573d6000803e3d6000fd5b5050505050509392505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d60d1a0930878751600003611a3a57600089815260016020908152604080832080548251818502810185019093528083529193909284015b82821015611a3157600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff16908201528252600190920191016119d7565b50505050611a3c565b875b87876040518663ffffffff1660e01b8152600401611a5e959493929190615257565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f91906151a0565b90505b949350505050565b333014611ab657600080fd5b611ac23084848461253c565b505050565b6040516310f0007760e31b81526001600160a01b038781166004830152602482018b905260009182917f0000000000000000000000000000000000000000000000000000000000000000169063878003b890604401602060405180830381865afa158015611b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5d91906151a0565b9050611bea8b8b611b718e8e8e8a8a61285e565b611b7961222d565b8c8b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8f018190048102820181019092528d815292508d91508c9081908401838280828437600092019190915250612ffb92505050565b6040516310f0007760e31b81526001600160a01b038981166004830152602482018d90526000917f00000000000000000000000000000000000000000000000000000000000000009091169063878003b890604401602060405180830381865afa158015611c5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8091906151a0565b905081811115611c9757611c948282614dd3565b92505b87831015611cc25760405163c3de539b60e01b81526004810184905260248101899052604401610a1e565b50509998505050505050505050565b6000611cdb61222d565b9050836001600160a01b0316816001600160a01b031614158015611daa5750604051631a45b42760e11b81526001600160a01b0382811660048301528581166024830152604482018590526064820184905260016084830181905260a48301527f0000000000000000000000000000000000000000000000000000000000000000169063348b684e9060c401602060405180830381865afa158015611d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da89190614f37565b155b15611de957604051631326f75560e11b81526001600160a01b038086166004830152821660248201526044810184905260648101839052608401610a1e565b50505050565b6000611df96144ab565b6000878152602081815260408083206001600160a01b03898116855290835281842082516060808201855291549283168152600160a01b830460ff1681860152600160a81b90920463ffffffff16828401528b855260018452828520805484518187028101870190955280855291959492938593909290849084015b82821015611ecf57600084815260209081902060408051606081018252918501546001600160a01b0381168352600160a01b810460ff1683850152600160a81b900463ffffffff1690820152825260019092019101611e75565b5050604051633277b1a160e01b8152929350506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691633277b1a19150611f2c908f908f908f90889088908f90600401615292565b6000604051808303816000875af1158015611f4b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611f739190810190615347565b9198509196509450925050881561200757611f8d8a6121dd565b60405163516a997360e11b81526001600160a01b038d81166004830152602482018d9052604482018c90526080606483015260006084830152919091169063a2d532e69060a401600060405180830381600087803b158015611fee57600080fd5b505af1158015612002573d6000803e3d6000fd5b505050505b6000851561205f576120188861224c565b15801561202457508215155b1561204d576120338682614dc0565b90506120408660196122db565b61204a9087614dd3565b95505b851561205f5761205f30898b8961253c565b8351156120be576120b18b60405180608001604052808c6001600160a01b03168152602001856020015160ff168152602001856040015163ffffffff168152602001898152508e8d8b8a898f8c6132ea565b6120bb9082614dc0565b90505b806000036120cd5760006120db565b6120db8b8a838b600061351c565b508a856000015165ffffffffffff16866020015165ffffffffffff167ffaf1d4bf1b08470c7ed8c351c5065f51af70b36b237723173f898453b97241428f8c8f898d8f61212661222d565b6040516121399796959493929190615473565b60405180910390a450505050509695505050505050565b6040516331a9108f60e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e906024015b602060405180830381865afa1580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c291906154c6565b604051632eec7b5560e11b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690635dd8f6aa9060240161219c565b600061223761365a565b905090565b80611de957611de9848484611cd1565b60405163ae74a1b560e01b81526001600160a01b0382811660048301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063ae74a1b590602401602060405180830381865afa1580156122b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c29190614f37565b60006122f3836103e86122ee8186614dc0565b6136cf565b61099c9084614dd3565b600061eeed196001600160a01b0384160161231957508061099c565b61232d6001600160a01b03841685846137a3565b5060009392505050565b604051630862026560e41b8152600481018390526001600160a01b0382811660248301526000917f000000000000000000000000000000000000000000000000000000000000000090911690638620265090604401602060405180830381865afa1580156123a9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061099c91906154c6565b306001600160a01b03861603612400576123fb84848460006040518060200160405280600081525086612afb565b610ef4565b600061240d8685856122fd565b9050856001600160a01b0316639e6eec05828787876000886040518763ffffffff1660e01b8152600401612445959493929190615209565b6000604051808303818588803b15801561245e57600080fd5b505af1158015612472573d6000803e3d6000fd5b5050505050505050505050565b306001600160a01b038716036124b2576124ad85858530866040518060200160405280600081525087612ffb565b611427565b60006124bf8786866122fd565b9050866001600160a01b031663fef4325782888888886000896040518863ffffffff1660e01b81526004016124f9969594939291906154e3565b60206040518083038185885af1158015612517573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061154791906151a0565b61eeed196001600160a01b0383160161255e57612559838261382d565b611de9565b306001600160a01b03851603612582576125596001600160a01b03831684836138cb565b604051636eb1769f60e11b81526001600160a01b03858116600483015230602483015282919084169063dd62ed3e90604401602060405180830381865afa1580156125d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f591906151a0565b1061260f576125596001600160a01b03831685858461392a565b6001600160a01b0381111561264757604051631999bf2f60e11b8152600481018290526001600160a01b036024820152604401610a1e565b604051631b63c28b60e11b81526001600160a01b0385811660048301528481166024830152828116604483015283811660648301527f000000000000000000000000000000000000000000000000000000000000000016906336c7851690608401600060405180830381600087803b1580156126c257600080fd5b505af1158015611547573d6000803e3d6000fd5b60006126e06144ab565b6000898152602081815260408083206001600160a01b038c811685529252808320905163060f2bdf60e31b81527f0000000000000000000000000000000000000000000000000000000000000000909216916330795ef89161274b918e91908d908d9060040161552f565b610140604051808303816000875af115801561276b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061278f919061557b565b909250905061279f610ff761222d565b6127cb576127c68a8a83886127c18761010001516001604e9190911c81161490565b61351c565b6127ce565b60005b6127d89082614dd3565b925089826000015165ffffffffffff16836020015165ffffffffffff167fd836655d29bc0376acd403e1e5a574fc237f820c4717dd006e0c087dfafda56c89898d878a8c61282461222d565b6040516128379796959493929190615473565b60405180910390a482156128515761285130878b8661253c565b5050979650505050505050565b6000858152602081815260408083206001600160a01b0388811685529252822054166128a85760405163765b60eb60e11b81526001600160a01b0386166004820152602401610a1e565b61eeed196001600160a01b038616016128c257503461131c565b34156128e357604051633ad385fd60e01b8152346004820152602401610a1e565b60008061294d612911604051806040016040528060078152602001663832b936b4ba1960c91b815250613963565b86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061397792505050565b915091508115612ac75760008180602001905181019061296d91906155aa565b905080602001516001600160a01b03168711156129b55760208101516040516363f4ca5d60e11b8152600481018990526001600160a01b039091166024820152604401610a1e565b6040805160e0810182526001600160a01b03808b166060808401918252602086810151841660808601528686015165ffffffffffff90811660a08701529187015190911660c08501529083523090830152835192820192909252907f000000000000000000000000000000000000000000000000000000000000000016632b67b570612a3f61222d565b8385608001516040518463ffffffff1660e01b8152600401612a6393929190615659565b600060405180830381600087803b158015612a7d57600080fd5b505af1925050508015612a8e575060015b612ac4573d808015612abc576040519150601f19603f3d011682016040523d82523d6000602084013e612ac1565b606091505b50505b50505b6000612ad288613b1d565b9050612ae7612adf61222d565b308a8a61253c565b80612af189613b1d565b6114b79190614dd3565b600083612b09576000612b14565b612b14878787613ba5565b9050867f9ecaf7fc3dfffd6867c175d6e684b1f1e3aef019398ba8db2c1ffab4a09db25386838686612b4461222d565b604051612b559594939291906156cd565b60405180910390a2612b718787612b6c8489614dc0565b613e0c565b50505050505050565b6000612b846144ab565b6000868152602081815260408083206001600160a01b038981168552925291829020915163181241e760e31b81527f00000000000000000000000000000000000000000000000000000000000000009091169163c0920f3891612bef918a918990899060040161552f565b610140604051808303816000875af1158015612c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c33919061557b565b925090506000612c4287612150565b610100830151909150604d1c600190811603612c6457612c6481886004611cd1565b600080612c7f8989866020015165ffffffffffff1688613e91565b9150915081600014612dd7576000612c968461224c565b612caa57612ca58360196122db565b612cad565b60005b90503063fdebc62a858b612cc18588614dd3565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015612d1057600080fd5b505af1925050508015612d21575060015b612db6573d808015612d4f576040519150601f19603f3d011682016040523d82523d6000602084013e612d54565b606091505b508a7f64b44e4e3e05c8f28c2e2f72441bea0712781cbab310066f2729067ab2735021868c612d838689614dd3565b85612d8c61222d565b604051612d9d959493929190615719565b60405180910390a2612db08b8b86613e0c565b50612dd5565b8015612dd557612dc68383614dc0565b9150612dd28184614dd3565b92505b505b6000612df78a8a84876127c18a61010001516001604e9190911c81161490565b905089856000015165ffffffffffff16866020015165ffffffffffff167fda42c5c18ef97738d10c32811895add569670a6fcbe9627ea198d446f3be6dea878c8b878a612e4261222d565b604080516001600160a01b03978816815260208101969096528501939093526060840191909152608083015290911660a082015260c00160405180910390a45050505050949350505050565b604051632fc8972b60e11b8152600481018790526001600160a01b038087166024830152604482018690528085166064830152831660848201523090635f912e569060a401600060405180830381600087803b158015612eed57600080fd5b505af1925050508015612efe575060015b612f92573d808015612f2c576040519150601f19603f3d011682016040523d82523d6000602084013e612f31565b606091505b506001866001600160a01b0316887f4b73f3c5cfb174c9d0494138d07ff8ee3aa400df46327d9893ed5ac122dd558a8885612f6a61222d565b604051612f799392919061575e565b60405180910390a4612f8c878787613e0c565b50611427565b83856001600160a01b0316877fb514e730b3f8ad3aa94b6857bcc5ff4a46954bdcf8c4b0346705b1d0ac7a43258487612fc961222d565b6040805193151584526001600160a01b03928316602085015291169082015260600160405180910390a4505050505050565b60408051608081018252600080825260208201819052918101829052606081019190915260008060008a81526020019081526020016000206000896001600160a01b03166001600160a01b031681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016000820160149054906101000a900460ff1660ff1660ff1681526020016000820160159054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506040518060800160405280896001600160a01b03168152602001826020015160ff168152602001826040015163ffffffff1681526020018881525091505060008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c59dfadb89868e8b8a6040518663ffffffff1660e01b815260040161316c9594939291906157c4565b6000604051808303816000875af115801561318b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526131b39190810190615806565b925092509250600082600014613260576131cc8c6121dd565b6040516363fdc96f60e11b8152600481018e9052602481018590526001600160a01b038a8116604483015260a06064830152600060a483015260016084830152919091169063c7fb92de9060c4016020604051808303816000875af1158015613239573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325d91906151a0565b90505b8b846000015165ffffffffffff16856020015165ffffffffffff167f133161f1c9161488f777ab9a26aae91d47c0d9a3fafb398960f138db02c737978c8c8f878e8e6132aa61222d565b6040516132bd9796959493929190615925565b60405180910390a48151156132dc576132dc8c83878c888d878d614035565b505050505050505050505050565b6000806040518061014001604052808a6001600160a01b031681526020018c8152602001876020015165ffffffffffff1681526020018981526020018b81526020018b8152602001868152602001856001600160a01b0316815260200160405180602001604052806000815250815260200188815250905060005b8351811015611cc257600084828151811061338257613382614de6565b60200260200101519050600061339b826000015161224c565b6133b3576133ae826020015160196122db565b6133b6565b60005b905080156133e55760208201516133cd9086614dc0565b945080826020018181516133e19190614dd3565b9052505b60405180608001604052808e600001516001600160a01b031681526020018e6020015160ff1681526020018e6040015163ffffffff16815260200183602001518152508460a001819052508160400151846101000181905250600061345783600001518f6000015185602001516122fd565b835160405163611481d960e11b81529192506001600160a01b03169063c22903b2908390613489908990600401615a30565b6000604051808303818588803b1580156134a257600080fd5b505af11580156134b6573d6000803e3d6000fd5b505050505082600001516001600160a01b03167fcf8b519514967a394374844411e77f7b1aab68299a65fa6d3593a4f30deaec35868560200151856134f961222d565b6040516135099493929190615a43565b60405180910390a2505050600101613365565b60006135298460196122db565b9050811561363c5760008681526002602090815260408083206001600160a01b03808a16855290835292819020815160608101835288815293871692840192909252909190810161357d6224ea0042614dc0565b65ffffffffffff908116909152825460018181018555600094855260209485902084516002909302019182559383015193018054604090930151909116600160a01b026001600160d01b03199092166001600160a01b039384161791909117905584908616877fef9cd8fc3b61b64b44042ada0a8a3ede1649bc1b112673da228120f13bf1381e60198761360f61222d565b604080519384526001600160a01b03928316602085015291169082015260600160405180910390a461131c565b6000613649600187612337565b905061131a87878487856000612e8e565b6000366014336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156136975750808210155b156136c7576000366136a98385614dd3565b6136b4928290615a7b565b6136bd91615aa5565b60601c9250505090565b339250505090565b6000808060001985870985870292508281108382030391505080600003613709578382816136ff576136ff615ada565b049250505061099c565b83811061373a57604051630c740aef60e31b8152600481018790526024810186905260448101859052606401610a1e565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa1580156137f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381791906151a0565b9050611de984846138288585614dc0565b614210565b804710156138575760405163cf47918160e01b815247600482015260248101829052604401610a1e565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146138a4576040519150601f19603f3d011682016040523d82523d6000602084013e6138a9565b606091505b5050905080611ac25760405163d6bda27560e01b815260040160405180910390fd5b6040516001600160a01b03838116602483015260448201839052611ac291859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061429c565b6040516001600160a01b038481166024830152838116604483015260648201839052611de99186918216906323b872dd906084016138f8565b805160208201206000903060601b186107c2565b60006060602583511161399c5750506040805160208101909152600080825290613b16565b6000836139ab60046020614dc0565b815181106139bb576139bb614de6565b0160209081015160f81c91505b6000856139d6600484614dc0565b815181106139e6576139e6614de6565b01602001516001600160f81b03191614801590613a0c5750613a09602083615af0565b81105b15613b1357600085613a1f600484614dc0565b81518110613a2f57613a2f614de6565b016020908101518784019091015160f89190911c91506001600160e01b031980891690821603613b09576000613a66602086615af0565b613a71600986614dc0565b101580613aa6575087613a85600986614dc0565b81518110613a9557613a95614de6565b01602001516001600160f81b031916155b613adf57602088613ab8600987614dc0565b81518110613ac857613ac8614de6565b0160200151613ada919060f81c615af0565b613ae2565b87515b90506001613afb89613af5602087615af0565b8461430d565b965096505050505050613b16565b50506005016139c8565b50505b9250929050565b60006001600160a01b03821661eeee14613b9e576040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b9991906151a0565b6107c2565b4792915050565b60008381526003602090815260408083206001600160a01b03861680855290835281842054878552600284528285209185529252822054808210613bee5760009250505061099c565b836000613bfb8484614dd3565b90508360005b82811015613d745760008a81526002602090815260408083206001600160a01b038d1684529091528120613c358389614dc0565b81548110613c4557613c45614de6565b600091825260208083206040805160608101825260029490940290910180548452600101546001600160a01b03811692840192909252600160a01b90910465ffffffffffff16908201529150859003613c9e5750613d74565b6000613caf826000015160196122db565b90506000818360000151613cc39190614dd3565b9050808710613cf157988101989586900395613cdf848a614dc0565b613cea906001614dc0565b9450613d69565b613cfc876019614349565b9150818701600260008f815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020858b0181548110613d4a57613d4a614de6565b6000918252602082206002909102018054929092039091559982019996505b505050600101613c01565b50808514613da25760008981526003602090815260408083206001600160a01b038c16845290915290208190555b86886001600160a01b03168a7fedc5125503c021a73fd7d8ed0c2456b296be2c88f39fbed068bd091cef7ca43d8987613dd961222d565b6040805193845260208401929092526001600160a01b03169082015260600160405180910390a450505050509392505050565b6040516351fc173560e01b8152600481018490526001600160a01b038381166024830152604482018390527f000000000000000000000000000000000000000000000000000000000000000016906351fc173590606401600060405180830381600087803b158015613e7d57600080fd5b505af1158015612b71573d6000803e3d6000fd5b6040516369e11cc560e01b815260048101859052602481018390526001600160a01b0384811660448301526000918291633b9aca009183917f000000000000000000000000000000000000000000000000000000000000000016906369e11cc590606401600060405180830381865afa158015613f12573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613f3a9190810190615b07565b905060005b8151811015614026576000828281518110613f5c57613f5c614de6565b602002602001015190506000613f7d88836020015163ffffffff16876136cf565b90506000613f8d838d8d85614358565b90508015801590613f9e5750818114155b15613fb057613fad8288614dc0565b96505b8115613fbc5781890398505b826020015163ffffffff16860395508a6001600160a01b03168a8d7f527d1f65cc7cbc5b19926d6b040f10ec7f946968eced5ecf248d2f4f2c28f5f686868661400361222d565b6040516140139493929190615c18565b60405180910390a4505050600101613f3f565b50849350505094509492505050565b6000604051806101400160405280876001600160a01b031681526020018a8152602001866020015165ffffffffffff1681526020018881526020018881526020018660a001516001600160701b03168152602001848152602001856001600160a01b0316815260200160405180602001604052806000815250815260200183815250905060005b88518110156142045760008982815181106140d9576140d9614de6565b60209081029190910181015160408051608080820183528d516001600160a01b031682528d85015160ff16828601528d83015163ffffffff1682840152938301805160608301529387015281015161010086015280518b519251919350600092614142926122fd565b825160405163099bfcc360e11b81529192506001600160a01b031690631337f986908390614174908890600401615cdc565b6000604051808303818588803b15801561418d57600080fd5b505af11580156141a1573d6000803e3d6000fd5b505050505081600001516001600160a01b03167fb1ed2cd5f80d2005b57f16c4c1a1c8ee500b96725924cad83e44f32f05f400c08584602001516141e361222d565b6040516141f293929190615cef565b60405180910390a250506001016140bc565b50505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052614261848261445c565b611de9576040516001600160a01b0384811660248301526000604483015261429691869182169063095ea7b3906064016138f8565b611de984825b600080602060008451602086016000885af1806142bf576040513d6000823e3d81fd5b50506000513d915081156142d75780600114156142e4565b6001600160a01b0384163b155b15611de957604051635274afe760e01b81526001600160a01b0385166004820152602401610a1e565b60608282036040519150602081830101604052808252508260208501016020820160005b84811015610998578281015182820152602001614331565b600061099c83836103e86136cf565b600030634ff513ab8686868661436c61222d565b6040518663ffffffff1660e01b815260040161438c959493929190615d22565b6020604051808303816000875af19250505080156143c7575060408051601f3d908101601f191682019092526143c4918101906151a0565b60015b614455573d8080156143f5576040519150601f19603f3d011682016040523d82523d6000602084013e6143fa565b606091505b50847f7d1404acd9b8028cb88963a50aeeb83774d101e993a7fd89967afbc2d94c33fb87858461442861222d565b6040516144389493929190615d61565b60405180910390a261444b858585613e0c565b6000915050611aa2565b9050611aa2565b6000806000806020600086516020880160008a5af192503d915060005190508280156144a15750811561449257806001146144a1565b6000866001600160a01b03163b115b9695505050505050565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915290565b60006020828403121561450957600080fd5b81356001600160e01b03198116811461099c57600080fd5b6001600160a01b038116811461453657600080fd5b50565b60008060006060848603121561454e57600080fd5b83359250602084013561456081614521565b929592945050506040919091013590565b602080825282518282018190526000919060409081850190868401855b828110156145ce57815180518552868101516001600160a01b03168786015285015165ffffffffffff16858501526060909301929085019060010161458e565b5091979650505050505050565b60008083601f8401126145ed57600080fd5b5081356001600160401b0381111561460457600080fd5b602083019150836020828501011115613b1657600080fd5b60008060008060008060008060e0898b03121561463857600080fd5b883561464381614521565b97506020890135965060408901359550606089013561466181614521565b94506080890135935060a089013561467881614521565b925060c08901356001600160401b0381111561469357600080fd5b61469f8b828c016145db565b999c989b5096995094979396929594505050565b6000806000604084860312156146c857600080fd5b8335925060208401356001600160401b03808211156146e657600080fd5b818601915086601f8301126146fa57600080fd5b81358181111561470957600080fd5b87602060608302850101111561471e57600080fd5b6020830194508093505050509250925092565b6000806040838503121561474457600080fd5b82359150602083013561475681614521565b809150509250929050565b80516001600160a01b0316825260208082015160ff169083015260409081015163ffffffff16910152565b606081016107c28284614761565b60008060008060008587036101408112156147b457600080fd5b60c08112156147c257600080fd5b5085945060c0860135935060e08601356147db81614521565b925061010086013591506101208601356147f481614521565b809150509295509295909350565b60006020828403121561481457600080fd5b5035919050565b60008151808452602080850194506020840160005b8381101561485657614843878351614761565b6060969096019590820190600101614830565b509495945050505050565b60208152600061099c602083018461481b565b60006020828403121561488657600080fd5b813561099c81614521565b600080600080600060a086880312156148a957600080fd5b8535945060208601356148bb81614521565b93506040860135925060608601356148d281614521565b915060808601356147f481614521565b60008060008060008060008060006101008a8c03121561490157600080fd5b8935985060208a013561491381614521565b975060408a0135965060608a0135955060808a0135945060a08a013561493881614521565b935060c08a013561494881614521565b925060e08a01356001600160401b0381111561496357600080fd5b61496f8c828d016145db565b915080935050809150509295985092959850929598565b801515811461453657600080fd5b60008060008060008060008060c0898b0312156149b057600080fd5b8835975060208901356149c281614521565b96506040890135955060608901356149d981614986565b945060808901356001600160401b03808211156149f557600080fd5b614a018c838d016145db565b909650945060a08b0135915080821115614a1a57600080fd5b5061469f8b828c016145db565b600080600080600060a08688031215614a3f57600080fd5b853594506020860135614a5181614521565b94979496505050506040830135926060810135926080909101359150565b600080600060608486031215614a8457600080fd5b833592506020840135614a9681614521565b91506040840135614aa681614521565b809150509250925092565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715614ae957614ae9614ab1565b60405290565b60405161012081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160c081016001600160401b0381118282101715614ae957614ae9614ab1565b60405160a081016001600160401b0381118282101715614ae957614ae9614ab1565b604051601f8201601f191681016001600160401b0381118282101715614b7e57614b7e614ab1565b604052919050565b60006001600160401b03821115614b9f57614b9f614ab1565b5060051b60200190565b60ff8116811461453657600080fd5b63ffffffff8116811461453657600080fd5b600060608284031215614bdc57600080fd5b614be4614ac7565b90508135614bf181614521565b81526020820135614c0181614ba9565b60208201526040820135614c1481614bb8565b604082015292915050565b60008060008060808587031215614c3557600080fd5b843593506020808601356001600160401b03811115614c5357600080fd5b8601601f81018813614c6457600080fd5b8035614c77614c7282614b86565b614b56565b80828252602082019150606060206060850286010193508b841115614c9b57600080fd5b6020850194505b83851015614cc357614cb48c86614bca565b83529384019391850191614ca2565b50979a97995050505060408601359560600135949350505050565b600080600060608486031215614cf357600080fd5b8335614cfe81614521565b9250602084013561456081614521565b600080600080600080600080600060e08a8c031215614d2c57600080fd5b8935985060208a0135614d3e81614521565b975060408a0135965060608a0135614d5581614521565b955060808a0135945060a08a01356001600160401b0380821115614d7857600080fd5b614d848d838e016145db565b909650945060c08c0135915080821115614d9d57600080fd5b5061496f8c828d016145db565b634e487b7160e01b600052601160045260246000fd5b808201808211156107c2576107c2614daa565b818103818111156107c2576107c2614daa565b634e487b7160e01b600052603260045260246000fd5b65ffffffffffff8116811461453657600080fd5b8051614e1b81614dfc565b919050565b8051614e1b81614bb8565b80516001600160701b0381168114614e1b57600080fd5b8051614e1b81614521565b60006101208284031215614e6057600080fd5b614e68614aef565b9050614e7382614e10565b8152614e8160208301614e10565b6020820152614e9260408301614e10565b6040820152614ea360608301614e10565b6060820152614eb460808301614e20565b6080820152614ec560a08301614e2b565b60a0820152614ed660c08301614e20565b60c0820152614ee760e08301614e42565b60e082015261010080830151818301525092915050565b60006101208284031215614f1157600080fd5b61099c8383614e4d565b600060608284031215614f2d57600080fd5b61099c8383614bca565b600060208284031215614f4957600080fd5b815161099c81614986565b600060208284031215614f6657600080fd5b815161099c81614ba9565b60808101614fa58285546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b6001600160a01b039290921660609190910152919050565b66ffffffffffffff8116811461453657600080fd5b600060c08284031215614fe457600080fd5b614fec614b12565b8235614ff781614986565b8152602083013561500781614bb8565b6020820152604083013561501a81614fbd565b6040820152606083013561502d81614521565b6060820152608083013561504081614dfc565b608082015260a083013561505381614521565b60a08201529392505050565b80511515825260208082015163ffffffff169083015260408082015166ffffffffffffff16908301526060808201516001600160a01b039081169184019190915260808083015165ffffffffffff169084015260a09182015116910152565b81516001600160a01b031681526020808301519082015260408083015190820152606080830151908201526080808301519082015260a08281015161016083019161510b9084018261505f565b5092915050565b60006020828403121561512457600080fd5b813561099c81614fbd565b60006020828403121561514157600080fd5b813561099c81614986565b60006060828403121561515e57600080fd5b615166614ac7565b825161517181614521565b8152602083015161518181614ba9565b6020820152604083015161519481614bb8565b60408201529392505050565b6000602082840312156151b257600080fd5b5051919050565b60005b838110156151d45781810151838201526020016151bc565b50506000910152565b600081518084526151f58160208601602086016151b9565b601f01601f19169290920160200192915050565b85815260018060a01b0385166020820152836040820152821515606082015260c06080820152600060c082015260e060a0820152600061524c60e08301846151dd565b979650505050505050565b60018060a01b038616815284602082015260a06040820152600061527e60a083018661481b565b606083019490945250608001529392505050565b6001600160a01b0387168152602081018690526040810185905260006101006152be6060840187614761565b8060c08401526152d08184018661481b565b905082810360e08401526114b781856151dd565b600082601f8301126152f557600080fd5b81516001600160401b0381111561530e5761530e614ab1565b615321601f8201601f1916602001614b56565b81815284602083860101111561533657600080fd5b611aa28260208301602087016151b9565b600080600080610180858703121561535e57600080fd5b6153688686614e4d565b9350610120850151925061014085015191506101608501516001600160401b038082111561539557600080fd5b818701915087601f8301126153a957600080fd5b81516153b7614c7282614b86565b8082825260208201915060208360051b86010192508a8311156153d957600080fd5b602085015b83811015615463578051858111156153f557600080fd5b86016060818e03601f1901121561540b57600080fd5b615413614ac7565b602082015161542181614521565b81526040820151602082015260608201518781111561543f57600080fd5b61544e8f6020838601016152e4565b604083015250845250602092830192016153de565b50979a9699509497505050505050565b600060018060a01b03808a168352808916602084015287604084015286606084015285608084015260e060a08401526154af60e08401866151dd565b915080841660c08401525098975050505050505050565b6000602082840312156154d857600080fd5b815161099c81614521565b868152600060018060a01b03808816602084015286604084015280861660608401525083608083015260e060a0830152600060e08301526101008060c08401526114b7818401856151dd565b84815260c081016155696020830186546001600160a01b038116825260a081901c60ff16602083015260a81c63ffffffff16604090910152565b608082019390935260a0015292915050565b600080610140838503121561558f57600080fd5b6155998484614e4d565b915061012083015190509250929050565b6000602082840312156155bc57600080fd5b81516001600160401b03808211156155d357600080fd5b9083019060a082860312156155e757600080fd5b6155ef614b34565b82518152602083015161560181614521565b6020820152604083015161561481614dfc565b6040820152606083015161562781614dfc565b606082015260808301518281111561563e57600080fd5b61564a878286016152e4565b60808301525095945050505050565b600061010060018060a01b0380871684528551818151166020860152816020820151166040860152604081015165ffffffffffff80821660608801528060608401511660808801525050508060208701511660a085015250604085015160c08401528060e08401526144a1818401856151dd565b85815284602082015260a0604082015260006156ec60a08301866151dd565b82810360608401526156fe81866151dd565b91505060018060a01b03831660808301529695505050505050565b600060018060a01b038088168352808716602084015285604084015260a0606084015261574960a08401866151dd565b91508084166080840152509695505050505050565b83815260606020820152600061577760608301856151dd565b905060018060a01b0383166040830152949350505050565b80516001600160a01b0316825260208082015160ff169083015260408082015163ffffffff1690830152606090810151910152565b6001600160a01b038681168252600090610100906157e5602085018961578f565b8660a085015280861660c0850152508060e0840152610a27818401856151dd565b6000806000610160848603121561581c57600080fd5b6158268585614e4d565b925061012084015191506101408401516001600160401b038082111561584b57600080fd5b818601915086601f83011261585f57600080fd5b8151602061586f614c7283614b86565b82815260059290921b8401810191818101908a84111561588e57600080fd5b8286015b84811015615914578051868111156158a957600080fd5b87016060818e03601f190112156158bf57600080fd5b6158c7614ac7565b858201516158d481614521565b81526040820151868201526060820151888111156158f25760008081fd5b6159008f88838601016152e4565b604083015250845250918301918301615892565b508096505050505050509250925092565b600060018060a01b03808a168352808916602084015287604084015286606084015260e0608084015261595b60e08401876151dd565b83810360a085015261596d81876151dd565b92505080841660c08401525098975050505050505050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151606085015260808301516159c7608086018261578f565b5060a08301516101006159dc8187018361578f565b60c085015161018087015260e08501516001600160a01b03166101a08701528401516101c086018390529050615a14828601826151dd565b9150506101208301518482036101e086015261131c82826151dd565b60208152600061099c6020830184615985565b608081526000615a566080830187615985565b60208301959095525060408101929092526001600160a01b0316606090910152919050565b60008085851115615a8b57600080fd5b83861115615a9857600080fd5b5050820193919092039150565b6bffffffffffffffffffffffff198135818116916014851015615ad25780818660140360031b1b83161692505b505092915050565b634e487b7160e01b600052601260045260246000fd5b80820281158282048414176107c2576107c2614daa565b60006020808385031215615b1a57600080fd5b82516001600160401b03811115615b3057600080fd5b8301601f81018513615b4157600080fd5b8051615b4f614c7282614b86565b81815260c09182028301840191848201919088841115615b6e57600080fd5b938501935b83851015615c0c5780858a031215615b8b5760008081fd5b615b93614b12565b8551615b9e81614986565b815285870151615bad81614bb8565b81880152604086810151615bc081614fbd565b90820152606086810151615bd381614521565b90820152608086810151615be681614dfc565b9082015260a086810151615bf981614521565b9082015283529384019391850191615b73565b50979650505050505050565b6101208101615c27828761505f565b60c082019490945260e08101929092526001600160a01b031661010090910152919050565b80516001600160a01b03168252600061020060208301516020850152604083015160408501526060830151615c84606086018261578f565b506080830151615c9760e086018261578f565b5060a083015161016085015260c083015161018085015260e08301516001600160a01b03166101a08501526101008301516101c08501829052615a14828601826151dd565b60208152600061099c6020830184615c4c565b606081526000615d026060830186615c4c565b6020830194909452506001600160a01b0391909116604090910152919050565b6101408101615d31828861505f565b60c08201959095526001600160a01b0393841660e082015261010081019290925290911661012090910152919050565b6000610120615d70838861505f565b8560c08401528060e0840152615d88818401866151dd565b91505060018060a01b0383166101008301529594505050505056fea26469706673582212200665445b78dcf63dba37bccb72b9c4f444d9ec12408fa5b61634dbae7c94815e64736f6c63430008170033000000000000000000000000ab1065bc48c9f7e450411f1cc38c5ccfe5688ab80000000000000000000000004886c30c81a17a3a1084fd1812008fa0f71a20b90000000000000000000000009b52a59f108e36ce0a8eba595eca22dbadbe655f00000000000000000000000053a4354b7c6f83b0b2b7d559451a5180a410ab25000000000000000000000000270ec8711dca04cf5f3fdf10141428065e07194f00000000000000000000000094db7c71d9e4bcde99686be9570c68bf12708d3e000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000b2b5841dbef766d4b521221732f9b618fcf34a87", + "gas": "6038029", + "operation": 0, + "requireSuccess": true + }, + { + "to": "0x9B52A59F108e36cE0a8Eba595Eca22DbadbE655F", + "value": "0", + "txData": "0x42842e0e000000000000000000000000d72a3b02a39cfe137346444e5fbb5ff297b4d1b100000000000000000000000067ab04e9a0d2cc7cd63527d8013f0b1e4b1fa2bb0000000000000000000000000000000000000000000000000000000000000001", + "gas": "157390", + "operation": 0, + "requireSuccess": true + } + ], + "sphinxConfig": { + "projectName": "nana-core-testnet", + "orgId": "my-org-id", + "owners": [ + "0xba5ed94ab173e1242638F28d1449b24F1A883292" + ], + "mainnets": [ + "ethereum", + "optimism", + "base", + "arbitrum" + ], + "testnets": [ + "ethereum_sepolia", + "optimism_sepolia", + "base_sepolia", + "arbitrum_sepolia" + ], + "threshold": "1", + "saltNonce": "11" + }, + "executionMode": 2, + "initialState": { + "isSafeDeployed": true, + "isModuleDeployed": true, + "isExecuting": false + }, + "unlabeledContracts": [], + "arbitraryChain": false, + "libraries": [], + "gitCommit": "621b4728594b015d227adf08d7af07a2ea0ba570", + "safeInitData": null +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 56c68ed8..66a50f23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,18 @@ { "name": "@bananapus/core", - "version": "0.0.35", + "version": "0.0.38", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bananapus/core", - "version": "0.0.35", + "version": "0.0.38", "license": "MIT", "dependencies": { "@bananapus/permission-ids": "^0.0.16", "@chainlink/contracts": "^1.2.0", - "@openzeppelin/contracts": "^5.0.2", - "@prb/math": "^4.0.3", + "@openzeppelin/contracts": "^5.1.0", + "@prb/math": "^4.1.0", "@uniswap/permit2": "github:Uniswap/permit2" }, "devDependencies": { @@ -79,6 +79,58 @@ "node": ">=10" } }, + "node_modules/@arbitrum/nitro-contracts": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@arbitrum/nitro-contracts/-/nitro-contracts-1.1.1.tgz", + "integrity": "sha512-4Tyk3XVHz+bm8UujUC78LYSw3xAxyYvBCxfEX4z3qE4/ww7Qck/rmce5gbHMzQjArEAzAP2YSfYIFuIFuRXtfg==", + "hasInstallScript": true, + "license": "BUSL-1.1", + "dependencies": { + "@offchainlabs/upgrade-executor": "1.1.0-beta.0", + "@openzeppelin/contracts": "4.5.0", + "@openzeppelin/contracts-upgradeable": "4.5.2", + "patch-package": "^6.4.7" + } + }, + "node_modules/@arbitrum/nitro-contracts/node_modules/@openzeppelin/contracts": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.5.0.tgz", + "integrity": "sha512-fdkzKPYMjrRiPK6K4y64e6GzULR7R7RwxSigHS8DDp7aWDeoReqsQI+cxHV1UuhAqX69L1lAaWDxenfP+xiqzA==", + "license": "MIT" + }, + "node_modules/@arbitrum/nitro-contracts/node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.5.2.tgz", + "integrity": "sha512-xgWZYaPlrEOQo3cBj97Ufiuv79SPd8Brh4GcFYhPgb6WvAq4ppz8dWKL6h+jLAK01rUqMRp/TS9AdXgAeNvCLA==", + "license": "MIT" + }, + "node_modules/@arbitrum/token-bridge-contracts": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@arbitrum/token-bridge-contracts/-/token-bridge-contracts-1.1.2.tgz", + "integrity": "sha512-k7AZXiB2HFecJ1KfaDBqgOKe3Loo1ttGLC7hUOVB+0YrihIR6cYpJRuqKSKK4YCy+FF21AUDtaG3x57OFM667Q==", + "license": "Apache-2.0", + "dependencies": { + "@arbitrum/nitro-contracts": "^1.0.0-beta.8", + "@offchainlabs/upgrade-executor": "1.1.0-beta.0", + "@openzeppelin/contracts": "4.8.3", + "@openzeppelin/contracts-upgradeable": "4.8.3" + }, + "optionalDependencies": { + "@openzeppelin/upgrades-core": "^1.24.1" + } + }, + "node_modules/@arbitrum/token-bridge-contracts/node_modules/@openzeppelin/contracts": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.8.3.tgz", + "integrity": "sha512-bQHV8R9Me8IaJoJ2vPG4rXcL7seB7YVuskr4f+f5RyOStSZetwzkWtoqDMl5erkBJy0lDRUnIR2WIkPiC0GJlg==", + "license": "MIT" + }, + "node_modules/@arbitrum/token-bridge-contracts/node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.8.3.tgz", + "integrity": "sha512-SXDRl7HKpl2WDoJpn7CK/M9U4Z8gNXDHHChAKh0Iz+Wew3wu6CmFYBeie3je8V0GSXZAIYYwUktSrnW/kwVPtg==", + "license": "MIT" + }, "node_modules/@aws-crypto/sha256-js": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", @@ -155,17 +207,21 @@ } }, "node_modules/@chainlink/contracts": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.2.0.tgz", - "integrity": "sha512-rcHxzYKcVErANPiLTfL+KOklmHGu8eCB3XtPZolJSQLbH3ZNw9IkaGynQ1IjNUlAnTwFw5c72FCKrNN023xD7g==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.3.0.tgz", + "integrity": "sha512-Vk93nijTC5iRFW/L6FKUzeMuJy7k5dNzAtqlHpdreqtzL7efO/qXbYCkqjJFNXGurfOXVehHlehFoH4tWvSbfw==", + "license": "MIT", "dependencies": { + "@arbitrum/nitro-contracts": "1.1.1", + "@arbitrum/token-bridge-contracts": "1.1.2", "@changesets/changelog-github": "^0.5.0", - "@changesets/cli": "~2.27.3", + "@changesets/cli": "~2.27.8", "@eth-optimism/contracts": "0.6.0", "@openzeppelin/contracts": "4.9.3", "@openzeppelin/contracts-upgradeable": "4.9.3", "@scroll-tech/contracts": "0.1.0", - "semver": "^7.6.2" + "@zksync/contracts": "git+https://github.com/matter-labs/era-contracts.git#446d391d34bdb48255d5f8fef8a8248925fc98b9", + "semver": "^7.6.3" }, "engines": { "node": ">=18", @@ -2155,10 +2211,33 @@ "semver": "bin/semver.js" } }, + "node_modules/@offchainlabs/upgrade-executor": { + "version": "1.1.0-beta.0", + "resolved": "https://registry.npmjs.org/@offchainlabs/upgrade-executor/-/upgrade-executor-1.1.0-beta.0.tgz", + "integrity": "sha512-mpn6PHjH/KDDjNX0pXHEKdyv8m6DVGQiI2nGzQn0JbM1nOSHJpWx6fvfjtH7YxHJ6zBZTcsKkqGkFKDtCfoSLw==", + "license": "Apache 2.0", + "dependencies": { + "@openzeppelin/contracts": "4.7.3", + "@openzeppelin/contracts-upgradeable": "4.7.3" + } + }, + "node_modules/@offchainlabs/upgrade-executor/node_modules/@openzeppelin/contracts": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", + "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==", + "license": "MIT" + }, + "node_modules/@offchainlabs/upgrade-executor/node_modules/@openzeppelin/contracts-upgradeable": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", + "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", + "license": "MIT" + }, "node_modules/@openzeppelin/contracts": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.1.0.tgz", + "integrity": "sha512-p1ULhl7BXzjjbha5aqst+QMLY+4/LCWADXOCsmLHRM77AqiPjnd9vvUN9sosUfhL9JGKpZ0TjEGxgvnizmWGSA==", + "license": "MIT" }, "node_modules/@openzeppelin/contracts-upgradeable": { "version": "4.9.3", @@ -2313,7 +2392,7 @@ "version": "1.34.2", "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.34.2.tgz", "integrity": "sha512-UOsSStX812TIqHIa0+njmfZm4tpserxRuapjkGerOssMZkj7Ksje8ezLC/bETxmkougy0WoxEUjqzA1pY+RyNw==", - "dev": true, + "devOptional": true, "dependencies": { "cbor": "^9.0.0", "chalk": "^4.1.0", @@ -2332,7 +2411,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "devOptional": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2347,7 +2426,7 @@ "version": "9.0.2", "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, + "devOptional": true, "dependencies": { "nofilter": "^3.1.0" }, @@ -2359,7 +2438,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "devOptional": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2375,7 +2454,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "devOptional": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2387,13 +2466,13 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "devOptional": true }, "node_modules/@openzeppelin/upgrades-core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "devOptional": true, "engines": { "node": ">=8" } @@ -2402,7 +2481,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "devOptional": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2411,9 +2490,10 @@ } }, "node_modules/@prb/math": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@prb/math/-/math-4.0.3.tgz", - "integrity": "sha512-/RSt3VU1k2m3ox6U6kUL1MrktnAHr8vhydXu4eDtqFAms1gm3XnGpoZIPaK1lm2zdJQmKBwJ4EXALPARsuOlaA==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@prb/math/-/math-4.1.0.tgz", + "integrity": "sha512-ef5Xrlh3BeX4xT5/Wi810dpEPq2bYPndRxgFIaKSU1F/Op/s8af03kyom+mfU7gEpvfIZ46xu8W0duiHplbBMg==", + "license": "MIT" }, "node_modules/@scroll-tech/contracts": { "version": "0.1.0", @@ -3510,7 +3590,7 @@ "version": "5.1.5", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", - "dev": true, + "devOptional": true, "dependencies": { "@types/node": "*" } @@ -3545,7 +3625,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "dev": true, + "devOptional": true, "dependencies": { "@types/node": "*" } @@ -3570,7 +3650,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/node": "*" } @@ -3584,6 +3664,29 @@ "version": "1.0.0", "resolved": "git+ssh://git@github.com/Uniswap/permit2.git#cc56ad0f3439c502c246fc5cfcc3db92bb8b7219" }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "license": "BSD-2-Clause" + }, + "node_modules/@zksync/contracts": { + "name": "era-contracts", + "version": "0.1.0", + "resolved": "git+ssh://git@github.com/matter-labs/era-contracts.git#446d391d34bdb48255d5f8fef8a8248925fc98b9", + "integrity": "sha512-7OBoQ9Ix3SB8VxwWJCjht/SkinSOGVKNX1NfXRlvFGkPJ9wNNEeq42a2xKj+BHZGdj60cOiqpOj/YkMtlTDjbg==", + "workspaces": { + "packages": [ + "l1-contracts", + "l2-contracts", + "system-contracts", + "gas-bound-caller" + ], + "nohoist": [ + "**/@openzeppelin/**" + ] + } + }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", @@ -3786,7 +3889,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -3816,7 +3919,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -3836,7 +3939,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, + "devOptional": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -3913,6 +4016,15 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/atomic-sleep": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", @@ -3935,7 +4047,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, + "devOptional": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -3975,14 +4087,13 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dev": true, + "devOptional": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -4143,7 +4254,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true + "devOptional": true }, "node_modules/bn.js": { "version": "5.2.1", @@ -4312,7 +4423,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4344,7 +4454,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, + "devOptional": true, "dependencies": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -4358,7 +4468,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dev": true, + "devOptional": true, "dependencies": { "base-x": "^3.0.2" } @@ -4367,7 +4477,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, + "devOptional": true, "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -4410,7 +4520,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true + "devOptional": true }, "node_modules/bufio": { "version": "1.2.1", @@ -4433,7 +4543,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, + "devOptional": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4567,7 +4677,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -4693,13 +4803,12 @@ "version": "6.1.1", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.1.tgz", "integrity": "sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==", - "dev": true + "devOptional": true }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/conf": { "version": "10.2.0", @@ -4782,7 +4891,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, + "devOptional": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -4795,7 +4904,7 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, + "devOptional": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -4852,7 +4961,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -4869,7 +4978,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -4886,7 +4995,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -4923,7 +5032,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, + "devOptional": true, "dependencies": { "ms": "2.1.2" }, @@ -4963,7 +5072,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, + "devOptional": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4980,7 +5089,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, + "devOptional": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -5186,7 +5295,7 @@ "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, + "devOptional": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -5246,7 +5355,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, + "devOptional": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -5258,7 +5367,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" } @@ -5267,7 +5376,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, + "devOptional": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -5279,7 +5388,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, + "devOptional": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -5293,7 +5402,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "dev": true, + "devOptional": true, "dependencies": { "hasown": "^2.0.0" } @@ -5302,7 +5411,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, + "devOptional": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -5460,7 +5569,7 @@ "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "dev": true, + "devOptional": true, "dependencies": { "@types/bn.js": "^5.1.0", "bn.js": "^5.1.2", @@ -5476,7 +5585,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -5580,7 +5689,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, + "devOptional": true, "dependencies": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -5919,6 +6028,15 @@ "node": ">=8" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -5958,7 +6076,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, + "devOptional": true, "dependencies": { "is-callable": "^1.1.3" } @@ -6032,8 +6150,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -6053,7 +6170,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6062,7 +6179,7 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -6080,7 +6197,7 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6106,7 +6223,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, + "devOptional": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -6140,7 +6257,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -6166,7 +6283,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6197,7 +6313,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, + "devOptional": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -6231,7 +6347,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, + "devOptional": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -6561,7 +6677,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -6579,7 +6695,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, + "devOptional": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -6591,7 +6707,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -6603,7 +6719,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -6615,7 +6731,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, + "devOptional": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -6630,7 +6746,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -6653,7 +6769,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, + "devOptional": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -6796,7 +6912,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -6998,7 +7113,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, + "devOptional": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -7030,7 +7145,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -7046,7 +7161,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, + "devOptional": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -7070,7 +7185,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7086,7 +7201,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -7094,11 +7209,29 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "license": "MIT" + }, "node_modules/is-data-view": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, + "devOptional": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -7113,7 +7246,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, + "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7124,6 +7257,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7175,7 +7323,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" }, @@ -7195,7 +7343,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, + "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7219,7 +7367,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -7235,7 +7383,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -7262,7 +7410,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, + "devOptional": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -7288,7 +7436,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, + "devOptional": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -7303,7 +7451,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, + "devOptional": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -7336,7 +7484,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -7352,6 +7500,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -7475,7 +7635,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "node-addon-api": "^2.0.0", @@ -7495,6 +7655,15 @@ "graceful-fs": "^4.1.9" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -7678,7 +7847,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, + "devOptional": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -7822,7 +7991,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -7834,7 +8002,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8173,7 +8340,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "devOptional": true }, "node_modules/mute-stream": { "version": "0.0.7", @@ -8196,6 +8363,12 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "license": "MIT" + }, "node_modules/nise": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", @@ -8219,7 +8392,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", - "dev": true + "devOptional": true }, "node_modules/node-fetch": { "version": "2.7.0", @@ -8244,7 +8417,7 @@ "version": "4.8.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", - "dev": true, + "devOptional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -8255,7 +8428,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, + "devOptional": true, "engines": { "node": ">=12.19" } @@ -8314,7 +8487,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, + "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8323,7 +8496,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" } @@ -8332,7 +8505,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -8377,7 +8550,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -8406,6 +8578,22 @@ "node": ">=6" } }, + "node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -8634,6 +8822,184 @@ "node": ">= 0.8" } }, + "node_modules/patch-package": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", + "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^1.10.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=10", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/patch-package/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/patch-package/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8646,7 +9012,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -8692,7 +9057,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, + "devOptional": true, "dependencies": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -8855,7 +9220,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 0.4" } @@ -8896,7 +9261,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", - "dev": true, + "devOptional": true, "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", @@ -8907,7 +9272,7 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 4" } @@ -9022,7 +9387,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, + "devOptional": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -9069,7 +9434,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9100,7 +9465,7 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -9292,7 +9657,6 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -9304,7 +9668,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, + "devOptional": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -9314,7 +9678,7 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "dev": true, + "devOptional": true, "dependencies": { "bn.js": "^5.2.0" }, @@ -9390,7 +9754,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -9408,13 +9772,13 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "devOptional": true }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, + "devOptional": true, "funding": [ { "type": "github", @@ -9434,7 +9798,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -9461,7 +9825,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "dev": true, + "devOptional": true, "hasInstallScript": true, "dependencies": { "elliptic": "^6.5.4", @@ -9473,9 +9837,10 @@ } }, "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -9556,7 +9921,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, + "devOptional": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -9573,7 +9938,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, + "devOptional": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -9588,7 +9953,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "devOptional": true }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -9600,7 +9965,7 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -9632,7 +9997,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -9821,7 +10186,7 @@ "version": "0.4.56", "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.56.tgz", "integrity": "sha512-HgmsA/Gfklm/M8GFbCX/J1qkVH0spXHgALCNZ8fA8x5X+MFdn/8CP2gr5OVyXjXw6RZTPC/Sxl2RUDQOXyNMeA==", - "dev": true, + "devOptional": true, "dependencies": { "array.prototype.findlast": "^1.2.2" } @@ -9970,7 +10335,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, + "devOptional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -9993,7 +10358,7 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10011,7 +10376,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10025,7 +10390,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10349,7 +10714,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10363,7 +10728,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -10382,7 +10747,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, + "devOptional": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -10402,7 +10767,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -10448,7 +10813,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, + "devOptional": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -10532,7 +10897,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "devOptional": true }, "node_modules/utils-merge": { "version": "1.0.1", @@ -10689,7 +11054,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, + "devOptional": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -10705,7 +11070,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, + "devOptional": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -10812,8 +11177,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/ws": { "version": "7.4.6", @@ -10849,6 +11213,15 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/package.json b/package.json index e3e91945..7a567528 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bananapus/core", - "version": "0.0.37", + "version": "0.0.38", "license": "MIT", "repository": { "type": "git", @@ -21,8 +21,8 @@ "dependencies": { "@bananapus/permission-ids": "^0.0.16", "@chainlink/contracts": "^1.2.0", - "@openzeppelin/contracts": "^5.0.2", - "@prb/math": "^4.0.3", + "@openzeppelin/contracts": "^5.1.0", + "@prb/math": "^4.1.0", "@uniswap/permit2": "github:Uniswap/permit2" }, "devDependencies": {